diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-09-02 10:59:27 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-09-02 10:59:27 -0700 |
commit | 919fae1686881ed3922ea9de5b0c0a4feff3069e (patch) | |
tree | f96528958189ef42959f8e3caf129cf7f873025b /drivers | |
parent | e77295dc9e6b52281ae85af4068f13752524e9f4 (diff) | |
parent | b67c5f87c13f398ec3f4d6b455cb0bbeda8d7ac0 (diff) |
Merge git://git.infradead.org/users/dwmw2/random-2.6
* git://git.infradead.org/users/dwmw2/random-2.6:
[MTD] mtdchar.c: Fix regression in MEMGETREGIONINFO ioctl()
dabusb_fpga_download(): fix a memory leak
Remove '#include <stddef.h>' from mm/page_isolation.c
Fix modules_install on RO nfs-exported trees.
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/video/dabusb.c | 1 | ||||
-rw-r--r-- | drivers/mtd/mtdchar.c | 16 |
2 files changed, 11 insertions, 6 deletions
diff --git a/drivers/media/video/dabusb.c b/drivers/media/video/dabusb.c index 48f4b92a8f8b..79faedf58521 100644 --- a/drivers/media/video/dabusb.c +++ b/drivers/media/video/dabusb.c @@ -403,6 +403,7 @@ static int dabusb_fpga_download (pdabusb_t s, const char *fname) ret = request_firmware(&fw, "dabusb/bitstream.bin", &s->usbdev->dev); if (ret) { err("Failed to load \"dabusb/bitstream.bin\": %d\n", ret); + kfree(b); return ret; } diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c index d2f331876e4c..e00d424e6575 100644 --- a/drivers/mtd/mtdchar.c +++ b/drivers/mtd/mtdchar.c @@ -410,16 +410,20 @@ static int mtd_ioctl(struct inode *inode, struct file *file, case MEMGETREGIONINFO: { - struct region_info_user ur; + uint32_t ur_idx; + struct mtd_erase_region_info *kr; + struct region_info_user *ur = (struct region_info_user *) argp; - if (copy_from_user(&ur, argp, sizeof(struct region_info_user))) + if (get_user(ur_idx, &(ur->regionindex))) return -EFAULT; - if (ur.regionindex >= mtd->numeraseregions) - return -EINVAL; - if (copy_to_user(argp, &(mtd->eraseregions[ur.regionindex]), - sizeof(struct mtd_erase_region_info))) + kr = &(mtd->eraseregions[ur_idx]); + + if (put_user(kr->offset, &(ur->offset)) + || put_user(kr->erasesize, &(ur->erasesize)) + || put_user(kr->numblocks, &(ur->numblocks))) return -EFAULT; + break; } |