From 366e2c89b4fe13a6c4abbd4572a3e9a8c4226577 Mon Sep 17 00:00:00 2001 From: Vasiliy Kulikov Date: Sun, 5 Sep 2010 22:32:53 +0400 Subject: [PATCH] --- yaml --- r: 219779 b: refs/heads/master c: 7b1f6bfb03cca84af40aa9142ddf99ace9894f6e h: refs/heads/master i: 219777: aa883e06225b3e8be3b85e1753216c00f202da50 219775: 9137fd048ea7fbd2f183a30db87a99fa73aacc9f v: v3 --- [refs] | 2 +- .../staging/westbridge/astoria/gadget/cyasgadget.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 8ee9d1fdd022..f0949779ee51 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ec53d6123bea9f69887f194b5d4294a43292120d +refs/heads/master: 7b1f6bfb03cca84af40aa9142ddf99ace9894f6e diff --git a/trunk/drivers/staging/westbridge/astoria/gadget/cyasgadget.c b/trunk/drivers/staging/westbridge/astoria/gadget/cyasgadget.c index ced239dc3678..48080b39abec 100644 --- a/trunk/drivers/staging/westbridge/astoria/gadget/cyasgadget.c +++ b/trunk/drivers/staging/westbridge/astoria/gadget/cyasgadget.c @@ -1123,6 +1123,8 @@ static int cyasgadget_ioctl( /* better use fixed size buff*/ alloc_filename = kmalloc(k_d.name_length + 1, GFP_KERNEL); + if (alloc_filename == NULL) + return -ENOMEM; /* get the filename */ if (copy_from_user(alloc_filename, k_d.file_name, @@ -1132,12 +1134,13 @@ static int cyasgadget_ioctl( "copy file name from user space failed\n", __func__); #endif + kfree(alloc_filename); return -EFAULT; } file_to_allocate = filp_open(alloc_filename, O_RDWR, 0); - if ((int)file_to_allocate != 0xfffffffe) { + if (!IS_ERR(file_to_allocate)) { struct address_space *mapping = file_to_allocate->f_mapping; @@ -1379,6 +1382,7 @@ static int cyasgadget_ioctl( __func__, alloc_filename); } /* end if (file_to_allocate)*/ #endif + kfree(alloc_filename); initsoj_safe_exit: ret_stat = 0; retval = __put_user(ret_stat, @@ -1410,12 +1414,15 @@ static int cyasgadget_ioctl( return -EFAULT; map_filename = kmalloc(k_d.name_length + 1, GFP_KERNEL); + if (map_filename == NULL) + return -ENOMEM; if (copy_from_user(map_filename, k_d.file_name, k_d.name_length + 1)) { #ifndef WESTBRIDGE_NDEBUG cy_as_hal_print_message("%s: copy file name from " "user space failed\n", __func__); #endif + kfree(map_filename); return -EFAULT; } @@ -1561,6 +1568,7 @@ static int cyasgadget_ioctl( __func__, map_filename); } #endif + kfree(map_filename); ret_stat = 0; retval = __put_user(ret_stat, (uint32_t __user *)