summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorShailendra Verma <shailendra.v@samsung.com>2016-11-10 15:17:41 +0530
committerDavid Sterba <dsterba@suse.com>2016-11-30 13:45:18 +0100
commit7b9ea6279b337455268fa41c1ddec22f1cb44e8f (patch)
tree031881988f2df5ae168ae4de777fe51688da2d7f /fs
parent58e8012cc12b3cdebea118981c4fd7136d52f2c7 (diff)
downloadlinux-stable-7b9ea6279b337455268fa41c1ddec22f1cb44e8f.tar.gz
linux-stable-7b9ea6279b337455268fa41c1ddec22f1cb44e8f.tar.bz2
linux-stable-7b9ea6279b337455268fa41c1ddec22f1cb44e8f.zip
btrfs: return early from failed memory allocations in ioctl handlers
There is no need to call kfree() if memdup_user() fails, as no memory was allocated and the error in the error-valued pointer should be returned. Signed-off-by: Shailendra Verma <shailendra.v@samsung.com> [ edit subject ] Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/ioctl.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index a26202ebed33..4a20f3e68cb4 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -4569,11 +4569,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) {
@@ -5200,11 +5197,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_KERNEL);
if (!args64) {
@@ -5252,11 +5246,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);