From: Jeff Mahoney <jeffm@suse.com>
To: Shailendra Verma <shailendra.v@samsung.com>,
Chris Mason <clm@fb.com>, Josef Bacik <jbacik@fb.com>,
David Sterba <dsterba@suse.com>,
linux-btrfs@vger.kernel.org,
Ravikant Sharma <ravikant.s2@samsung.com>
Cc: linux-kernel@vger.kernel.org, vidushi.koul@samsung.com
Subject: Re: Fs: Btrfs - Fix possible ERR_PTR() dereferencing.
Date: Tue, 20 Sep 2016 09:00:44 -0400 [thread overview]
Message-ID: <7050d410-dbf1-15a3-a6ba-2ae28f1fb0ee@suse.com> (raw)
In-Reply-To: <1474354107-18774-1-git-send-email-shailendra.v@samsung.com>
[-- Attachment #1.1: Type: text/plain, Size: 2414 bytes --]
On 9/20/16 2:48 AM, Shailendra Verma wrote:
> This is of course wrong to call kfree() if memdup_user() fails,
> no memory was allocated and the error in the error-valued pointer
> should be returned.
>
> Reviewed-by: Ravikant Sharma <ravikant.s2@samsung.com>
> Signed-off-by: Shailendra Verma <shailendra.v@samsung.com>
Hi Shailendra -
In all three cases, the return value is set using the error-valued
pointer and the pointer is set to NULL. kfree() checks to see if the
pointer is NULL and, if so, does nothing. This allows us to use a
common exit path which is an extremely common pattern in the kernel. So
there's never any possible ERR_PTR dereferencing happening.
However, in all three cases, the allocation you're checking is the first
in each routine and there's no additional cleanup to do. So your patch
is an improvement, but it's an improvement in code readability instead
of a bug fix. I'd ask that you re-submit with a commit message that
reflects that.
Thanks,
-Jeff
> ---
> fs/btrfs/ioctl.c | 21 ++++++---------------
> 1 file changed, 6 insertions(+), 15 deletions(-)
>
> diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
> index da94138..58a40f8 100644
> --- a/fs/btrfs/ioctl.c
> +++ b/fs/btrfs/ioctl.c
> @@ -4512,11 +4512,8 @@ static long btrfs_ioctl_logical_to_ino(struct btrfs_root *root,
> return -EPERM;
>
> loi = memdup_user(arg, sizeof(*loi));
> - if (IS_ERR(loi)) {
> - ret = PTR_ERR(loi);
> - loi = NULL;
> - goto out;
> - }
> + if (IS_ERR(loi))
> + return PTR_ERR(loi);
>
> path = btrfs_alloc_path();
> if (!path) {
> @@ -5143,11 +5140,8 @@ static long btrfs_ioctl_set_received_subvol_32(struct file *file,
> int ret = 0;
>
> args32 = memdup_user(arg, sizeof(*args32));
> - if (IS_ERR(args32)) {
> - ret = PTR_ERR(args32);
> - args32 = NULL;
> - goto out;
> - }
> + if (IS_ERR(args32))
> + return PTR_ERR(args32);
>
> args64 = kmalloc(sizeof(*args64), GFP_NOFS);
> if (!args64) {
> @@ -5195,11 +5189,8 @@ static long btrfs_ioctl_set_received_subvol(struct file *file,
> int ret = 0;
>
> sa = memdup_user(arg, sizeof(*sa));
> - if (IS_ERR(sa)) {
> - ret = PTR_ERR(sa);
> - sa = NULL;
> - goto out;
> - }
> + if (IS_ERR(sa))
> + return PTR_ERR(sa);
>
> ret = _btrfs_ioctl_set_received_subvol(file, sa);
>
>
--
Jeff Mahoney
SUSE Labs
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 881 bytes --]
prev parent reply other threads:[~2016-09-20 13:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-20 6:48 Fs: Btrfs - Fix possible ERR_PTR() dereferencing Shailendra Verma
2016-09-20 13:00 ` Jeff Mahoney [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7050d410-dbf1-15a3-a6ba-2ae28f1fb0ee@suse.com \
--to=jeffm@suse.com \
--cc=clm@fb.com \
--cc=dsterba@suse.com \
--cc=jbacik@fb.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ravikant.s2@samsung.com \
--cc=shailendra.v@samsung.com \
--cc=vidushi.koul@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).