* [PATCH] fs/qnx: Delete unnecessary checks before brelse()
@ 2019-09-03 17:20 Markus Elfring
2019-09-03 17:27 ` Anders Larsen
0 siblings, 1 reply; 3+ messages in thread
From: Markus Elfring @ 2019-09-03 17:20 UTC (permalink / raw)
To: kernel-janitors, Al Viro, Anders Larsen, Deepa Dinamani,
Greg Kroah-Hartman, Jeff Layton, Thomas Gleixner
Cc: LKML
From: Markus Elfring <elfring@users.sourceforge.net>
Date: Tue, 3 Sep 2019 19:15:09 +0200
The brelse() function tests whether its argument is NULL
and then returns immediately.
Thus the tests around the shown calls are not needed.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
fs/qnx4/inode.c | 3 +--
fs/qnx6/inode.c | 6 ++----
2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/fs/qnx4/inode.c b/fs/qnx4/inode.c
index e8da1cde87b9..018a4c657f7c 100644
--- a/fs/qnx4/inode.c
+++ b/fs/qnx4/inode.c
@@ -118,8 +118,7 @@ unsigned long qnx4_block_map( struct inode *inode, long iblock )
bh = NULL;
}
}
- if ( bh )
- brelse( bh );
+ brelse(bh);
}
QNX4DEBUG((KERN_INFO "qnx4: mapping block %ld of inode %ld = %ld\n",iblock,inode->i_ino,block));
diff --git a/fs/qnx6/inode.c b/fs/qnx6/inode.c
index 345db56c98fd..083170541add 100644
--- a/fs/qnx6/inode.c
+++ b/fs/qnx6/inode.c
@@ -472,10 +472,8 @@ static int qnx6_fill_super(struct super_block *s, void *data, int silent)
out1:
iput(sbi->inodes);
out:
- if (bh1)
- brelse(bh1);
- if (bh2)
- brelse(bh2);
+ brelse(bh1);
+ brelse(bh2);
outnobh:
kfree(qs);
s->s_fs_info = NULL;
--
2.23.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] fs/qnx: Delete unnecessary checks before brelse()
2019-09-03 17:20 [PATCH] fs/qnx: Delete unnecessary checks before brelse() Markus Elfring
@ 2019-09-03 17:27 ` Anders Larsen
2019-09-04 14:57 ` Dan Carpenter
0 siblings, 1 reply; 3+ messages in thread
From: Anders Larsen @ 2019-09-03 17:27 UTC (permalink / raw)
To: Markus Elfring
Cc: kernel-janitors, Al Viro, Deepa Dinamani, Greg Kroah-Hartman,
Jeff Layton, Thomas Gleixner, LKML
On Tuesday, 2019-09-03 19:20 Markus Elfring wrote:
> From: Markus Elfring <elfring@users.sourceforge.net>
> Date: Tue, 3 Sep 2019 19:15:09 +0200
>
> The brelse() function tests whether its argument is NULL
> and then returns immediately.
> Thus the tests around the shown calls are not needed.
>
> This issue was detected by using the Coccinelle software.
>
> Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
> ---
> fs/qnx4/inode.c | 3 +--
> fs/qnx6/inode.c | 6 ++----
> 2 files changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/fs/qnx4/inode.c b/fs/qnx4/inode.c
> index e8da1cde87b9..018a4c657f7c 100644
> --- a/fs/qnx4/inode.c
> +++ b/fs/qnx4/inode.c
> @@ -118,8 +118,7 @@ unsigned long qnx4_block_map( struct inode *inode, long iblock )
> bh = NULL;
> }
> }
> - if ( bh )
> - brelse( bh );
> + brelse(bh);
> }
>
> QNX4DEBUG((KERN_INFO "qnx4: mapping block %ld of inode %ld = %ld\n",iblock,inode->i_ino,block));
> diff --git a/fs/qnx6/inode.c b/fs/qnx6/inode.c
> index 345db56c98fd..083170541add 100644
> --- a/fs/qnx6/inode.c
> +++ b/fs/qnx6/inode.c
> @@ -472,10 +472,8 @@ static int qnx6_fill_super(struct super_block *s, void *data, int silent)
> out1:
> iput(sbi->inodes);
> out:
> - if (bh1)
> - brelse(bh1);
> - if (bh2)
> - brelse(bh2);
> + brelse(bh1);
> + brelse(bh2);
> outnobh:
> kfree(qs);
> s->s_fs_info = NULL;
Acked-by: Anders Larsen <al@alarsen.net>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] fs/qnx: Delete unnecessary checks before brelse()
2019-09-03 17:27 ` Anders Larsen
@ 2019-09-04 14:57 ` Dan Carpenter
0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2019-09-04 14:57 UTC (permalink / raw)
To: Anders Larsen
Cc: Markus Elfring, kernel-janitors, Al Viro, Deepa Dinamani,
Greg Kroah-Hartman, Jeff Layton, Thomas Gleixner, LKML
On Tue, Sep 03, 2019 at 07:27:22PM +0200, Anders Larsen wrote:
> On Tuesday, 2019-09-03 19:20 Markus Elfring wrote:
> > diff --git a/fs/qnx6/inode.c b/fs/qnx6/inode.c
> > index 345db56c98fd..083170541add 100644
> > --- a/fs/qnx6/inode.c
> > +++ b/fs/qnx6/inode.c
> > @@ -472,10 +472,8 @@ static int qnx6_fill_super(struct super_block *s, void *data, int silent)
> > out1:
> > iput(sbi->inodes);
> > out:
> > - if (bh1)
> > - brelse(bh1);
> > - if (bh2)
> > - brelse(bh2);
> > + brelse(bh1);
> > + brelse(bh2);
> > outnobh:
> > kfree(qs);
> > s->s_fs_info = NULL;
It looks like the original code is buggy:
fs/qnx6/inode.c
409 pr_info("superblock #1 active\n");
410 } else {
411 /* superblock #2 active */
412 sbi->sb_buf = bh2;
413 sbi->sb = (struct qnx6_super_block *)bh2->b_data;
414 brelse(bh1);
^^^^^^^^^^
brelse()
415 pr_info("superblock #2 active\n");
416 }
417 mmi_success:
418 /* sanity check - limit maximum indirect pointer levels */
419 if (sb1->Inode.levels > QNX6_PTR_MAX_LEVELS) {
420 pr_err("too many inode levels (max %i, sb %i)\n",
421 QNX6_PTR_MAX_LEVELS, sb1->Inode.levels);
422 goto out;
^^^^^^^^
goto
423 }
[ snip ]
466
467 out3:
468 dput(s->s_root);
469 s->s_root = NULL;
470 out2:
471 iput(sbi->longfile);
472 out1:
473 iput(sbi->inodes);
474 out:
475 if (bh1)
476 brelse(bh1);
^^^^^^^^^^^
Double brelse().
477 if (bh2)
478 brelse(bh2);
479 outnobh:
480 kfree(qs);
481 s->s_fs_info = NULL;
482 return ret;
483 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-09-04 14:57 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-03 17:20 [PATCH] fs/qnx: Delete unnecessary checks before brelse() Markus Elfring
2019-09-03 17:27 ` Anders Larsen
2019-09-04 14:57 ` Dan Carpenter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).