Message ID | 20210413212527.473765-1-paul@darkrain42.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | cifs: Return correct error code from smb2_get_enc_key | expand |
tentatively merged into cifs-2.6.git for-next pending more reviews from Pavel etc and testing On Wed, Apr 14, 2021 at 1:56 AM Paul Aurich <paul@darkrain42.org> wrote: > > Avoid a warning if the error percolates back up: > > [440700.376476] CIFS VFS: \\otters.example.com crypt_message: Could not get encryption key > [440700.386947] ------------[ cut here ]------------ > [440700.386948] err = 1 > [440700.386977] WARNING: CPU: 11 PID: 2733 at /build/linux-hwe-5.4-p6lk6L/linux-hwe-5.4-5.4.0/lib/errseq.c:74 errseq_set+0x5c/0x70 > ... > [440700.397304] CPU: 11 PID: 2733 Comm: tar Tainted: G OE 5.4.0-70-generic #78~18.04.1-Ubuntu > ... > [440700.397334] Call Trace: > [440700.397346] __filemap_set_wb_err+0x1a/0x70 > [440700.397419] cifs_writepages+0x9c7/0xb30 [cifs] > [440700.397426] do_writepages+0x4b/0xe0 > [440700.397444] __filemap_fdatawrite_range+0xcb/0x100 > [440700.397455] filemap_write_and_wait+0x42/0xa0 > [440700.397486] cifs_setattr+0x68b/0xf30 [cifs] > [440700.397493] notify_change+0x358/0x4a0 > [440700.397500] utimes_common+0xe9/0x1c0 > [440700.397510] do_utimes+0xc5/0x150 > [440700.397520] __x64_sys_utimensat+0x88/0xd0 > > Fixes: 61cfac6f267d ("CIFS: Fix possible use after free in demultiplex thread") > Signed-off-by: Paul Aurich <paul@darkrain42.org> > CC: stable@vger.kernel.org > --- > fs/cifs/smb2ops.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c > index 61214b23c57f..caa5432a5ed1 100644 > --- a/fs/cifs/smb2ops.c > +++ b/fs/cifs/smb2ops.c > @@ -4418,7 +4418,7 @@ smb2_get_enc_key(struct TCP_Server_Info *server, __u64 ses_id, int enc, u8 *key) > } > spin_unlock(&cifs_tcp_ses_lock); > > - return 1; > + return -ENOENT; > } > /* > * Encrypt or decrypt @rqst message. @rqst[0] has the following format: > -- > 2.31.0 >
If we can't find an encryption key that means that there was a reconnect and an SMB session associated with the packet is gone. If this happens during the writeback (as in the trace above) I would rather retry instead of returning an error. I think we should use -EAGAIN instead, so the upper layer will attempt to retry the write request if such an error occurs. -- Best regards, Pavel Shilovsky ср, 14 апр. 2021 г. в 12:49, Steve French <smfrench@gmail.com>: > > tentatively merged into cifs-2.6.git for-next pending more reviews > from Pavel etc and testing > > On Wed, Apr 14, 2021 at 1:56 AM Paul Aurich <paul@darkrain42.org> wrote: > > > > Avoid a warning if the error percolates back up: > > > > [440700.376476] CIFS VFS: \\otters.example.com crypt_message: Could not get encryption key > > [440700.386947] ------------[ cut here ]------------ > > [440700.386948] err = 1 > > [440700.386977] WARNING: CPU: 11 PID: 2733 at /build/linux-hwe-5.4-p6lk6L/linux-hwe-5.4-5.4.0/lib/errseq.c:74 errseq_set+0x5c/0x70 > > ... > > [440700.397304] CPU: 11 PID: 2733 Comm: tar Tainted: G OE 5.4.0-70-generic #78~18.04.1-Ubuntu > > ... > > [440700.397334] Call Trace: > > [440700.397346] __filemap_set_wb_err+0x1a/0x70 > > [440700.397419] cifs_writepages+0x9c7/0xb30 [cifs] > > [440700.397426] do_writepages+0x4b/0xe0 > > [440700.397444] __filemap_fdatawrite_range+0xcb/0x100 > > [440700.397455] filemap_write_and_wait+0x42/0xa0 > > [440700.397486] cifs_setattr+0x68b/0xf30 [cifs] > > [440700.397493] notify_change+0x358/0x4a0 > > [440700.397500] utimes_common+0xe9/0x1c0 > > [440700.397510] do_utimes+0xc5/0x150 > > [440700.397520] __x64_sys_utimensat+0x88/0xd0 > > > > Fixes: 61cfac6f267d ("CIFS: Fix possible use after free in demultiplex thread") > > Signed-off-by: Paul Aurich <paul@darkrain42.org> > > CC: stable@vger.kernel.org > > --- > > fs/cifs/smb2ops.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c > > index 61214b23c57f..caa5432a5ed1 100644 > > --- a/fs/cifs/smb2ops.c > > +++ b/fs/cifs/smb2ops.c > > @@ -4418,7 +4418,7 @@ smb2_get_enc_key(struct TCP_Server_Info *server, __u64 ses_id, int enc, u8 *key) > > } > > spin_unlock(&cifs_tcp_ses_lock); > > > > - return 1; > > + return -ENOENT; > > } > > /* > > * Encrypt or decrypt @rqst message. @rqst[0] has the following format: > > -- > > 2.31.0 > > > > > -- > Thanks, > > Steve
diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c index 61214b23c57f..caa5432a5ed1 100644 --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c @@ -4418,7 +4418,7 @@ smb2_get_enc_key(struct TCP_Server_Info *server, __u64 ses_id, int enc, u8 *key) } spin_unlock(&cifs_tcp_ses_lock); - return 1; + return -ENOENT; } /* * Encrypt or decrypt @rqst message. @rqst[0] has the following format:
Avoid a warning if the error percolates back up: [440700.376476] CIFS VFS: \\otters.example.com crypt_message: Could not get encryption key [440700.386947] ------------[ cut here ]------------ [440700.386948] err = 1 [440700.386977] WARNING: CPU: 11 PID: 2733 at /build/linux-hwe-5.4-p6lk6L/linux-hwe-5.4-5.4.0/lib/errseq.c:74 errseq_set+0x5c/0x70 ... [440700.397304] CPU: 11 PID: 2733 Comm: tar Tainted: G OE 5.4.0-70-generic #78~18.04.1-Ubuntu ... [440700.397334] Call Trace: [440700.397346] __filemap_set_wb_err+0x1a/0x70 [440700.397419] cifs_writepages+0x9c7/0xb30 [cifs] [440700.397426] do_writepages+0x4b/0xe0 [440700.397444] __filemap_fdatawrite_range+0xcb/0x100 [440700.397455] filemap_write_and_wait+0x42/0xa0 [440700.397486] cifs_setattr+0x68b/0xf30 [cifs] [440700.397493] notify_change+0x358/0x4a0 [440700.397500] utimes_common+0xe9/0x1c0 [440700.397510] do_utimes+0xc5/0x150 [440700.397520] __x64_sys_utimensat+0x88/0xd0 Fixes: 61cfac6f267d ("CIFS: Fix possible use after free in demultiplex thread") Signed-off-by: Paul Aurich <paul@darkrain42.org> CC: stable@vger.kernel.org --- fs/cifs/smb2ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)