2019-08-29 00:02:07

by Colin King

[permalink] [raw]
Subject: [PATCH][cifs-next] cifs: ensure variable rc is initialized at the after_open label

From: Colin Ian King <[email protected]>

A previous fix added a jump to after_open which now leaves variable
rc in a uninitialized state. A couple of the cases in the following
switch statement do not set variable rc, hence the error check on rc
at the end of the switch statement is reading a garbage value in rc
for those specific cases. Fix this by initializing rc to zero before
the switch statement.

Fixes: 955a9c5b39379 ("cifs: create a helper to find a writeable handle by path name")
Addresses-Coverity: ("Uninitialized scalar variable")
Signed-off-by: Colin Ian King <[email protected]>
---
fs/cifs/smb2inode.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/fs/cifs/smb2inode.c b/fs/cifs/smb2inode.c
index 70342bcd89b4..939fc7b2234c 100644
--- a/fs/cifs/smb2inode.c
+++ b/fs/cifs/smb2inode.c
@@ -116,6 +116,7 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,
smb2_set_next_command(tcon, &rqst[num_rqst]);
after_open:
num_rqst++;
+ rc = 0;

/* Operation */
switch (command) {
--
2.20.1


2019-08-29 04:01:24

by Steve French

[permalink] [raw]
Subject: Re: [PATCH][cifs-next] cifs: ensure variable rc is initialized at the after_open label

Merged into cifs-2.6.git for-next

Ronnie,
You ok with merging this as a distinct patch?

On Wed, Aug 28, 2019 at 7:02 PM Colin King <[email protected]> wrote:
>
> From: Colin Ian King <[email protected]>
>
> A previous fix added a jump to after_open which now leaves variable
> rc in a uninitialized state. A couple of the cases in the following
> switch statement do not set variable rc, hence the error check on rc
> at the end of the switch statement is reading a garbage value in rc
> for those specific cases. Fix this by initializing rc to zero before
> the switch statement.
>
> Fixes: 955a9c5b39379 ("cifs: create a helper to find a writeable handle by path name")
> Addresses-Coverity: ("Uninitialized scalar variable")
> Signed-off-by: Colin Ian King <[email protected]>
> ---
> fs/cifs/smb2inode.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/cifs/smb2inode.c b/fs/cifs/smb2inode.c
> index 70342bcd89b4..939fc7b2234c 100644
> --- a/fs/cifs/smb2inode.c
> +++ b/fs/cifs/smb2inode.c
> @@ -116,6 +116,7 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,
> smb2_set_next_command(tcon, &rqst[num_rqst]);
> after_open:
> num_rqst++;
> + rc = 0;
>
> /* Operation */
> switch (command) {
> --
> 2.20.1
>


--
Thanks,

Steve

2019-08-29 04:10:55

by ronnie sahlberg

[permalink] [raw]
Subject: Re: [PATCH][cifs-next] cifs: ensure variable rc is initialized at the after_open label

On Thu, Aug 29, 2019 at 2:00 PM Steve French <[email protected]> wrote:
>
> Merged into cifs-2.6.git for-next
>
> Ronnie,
> You ok with merging this as a distinct patch?

Sure thing.
Thanks for the fix Colin.


>
> On Wed, Aug 28, 2019 at 7:02 PM Colin King <[email protected]> wrote:
> >
> > From: Colin Ian King <[email protected]>
> >
> > A previous fix added a jump to after_open which now leaves variable
> > rc in a uninitialized state. A couple of the cases in the following
> > switch statement do not set variable rc, hence the error check on rc
> > at the end of the switch statement is reading a garbage value in rc
> > for those specific cases. Fix this by initializing rc to zero before
> > the switch statement.
> >
> > Fixes: 955a9c5b39379 ("cifs: create a helper to find a writeable handle by path name")
> > Addresses-Coverity: ("Uninitialized scalar variable")
> > Signed-off-by: Colin Ian King <[email protected]>
> > ---
> > fs/cifs/smb2inode.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/fs/cifs/smb2inode.c b/fs/cifs/smb2inode.c
> > index 70342bcd89b4..939fc7b2234c 100644
> > --- a/fs/cifs/smb2inode.c
> > +++ b/fs/cifs/smb2inode.c
> > @@ -116,6 +116,7 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,
> > smb2_set_next_command(tcon, &rqst[num_rqst]);
> > after_open:
> > num_rqst++;
> > + rc = 0;
> >
> > /* Operation */
> > switch (command) {
> > --
> > 2.20.1
> >
>
>
> --
> Thanks,
>
> Steve