Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09fada5b authored by Al Viro's avatar Al Viro
Browse files

slightly reduce lossage in gdm72xx



* filp_close() needs non-NULL second argument only if it'd been in descriptor
table
* opened files have non-NULL dentries, TYVM
* ... and those dentries are positive - it's kinda hard to open a file that
doesn't exist.

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 32aecdd3
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -67,9 +67,8 @@ static int download_image(struct sdio_func *func, char *img_name)
		return -ENOENT;
	}

	if (filp->f_dentry)
	inode = filp->f_dentry->d_inode;
	if (!inode || !S_ISREG(inode->i_mode)) {
	if (!S_ISREG(inode->i_mode)) {
		printk(KERN_ERR "Invalid file type: %s\n", img_name);
		ret = -EINVAL;
		goto out;
@@ -124,7 +123,7 @@ static int download_image(struct sdio_func *func, char *img_name)
		pno++;
	}
out:
	filp_close(filp, current->files);
	filp_close(filp, NULL);
	return ret;
}

+9 −13
Original line number Diff line number Diff line
@@ -174,14 +174,12 @@ int usb_boot(struct usb_device *usbdev, u16 pid)
	filp = filp_open(img_name, O_RDONLY | O_LARGEFILE, 0);
	if (IS_ERR(filp)) {
		printk(KERN_ERR "Can't find %s.\n", img_name);
		set_fs(fs);
		ret = -ENOENT;
		goto restore_fs;
	}

	if (filp->f_dentry)
	inode = filp->f_dentry->d_inode;
	if (!inode || !S_ISREG(inode->i_mode)) {
	if (!S_ISREG(inode->i_mode)) {
		printk(KERN_ERR "Invalid file type: %s\n", img_name);
		ret = -EINVAL;
		goto out;
@@ -263,7 +261,7 @@ int usb_boot(struct usb_device *usbdev, u16 pid)
		ret = -EINVAL;
	}
out:
	filp_close(filp, current->files);
	filp_close(filp, NULL);

restore_fs:
	set_fs(fs);
@@ -323,14 +321,12 @@ static int em_download_image(struct usb_device *usbdev, char *path,
		goto restore_fs;
	}

	if (filp->f_dentry) {
	inode = filp->f_dentry->d_inode;
		if (!inode || !S_ISREG(inode->i_mode)) {
	if (!S_ISREG(inode->i_mode)) {
		printk(KERN_ERR "Invalid file type: %s\n", path);
		ret = -EINVAL;
		goto out;
	}
	}

	buf = kmalloc(DOWNLOAD_CHUCK + pad_size, GFP_KERNEL);
	if (buf == NULL) {
@@ -365,7 +361,7 @@ static int em_download_image(struct usb_device *usbdev, char *path,
		goto out;

out:
	filp_close(filp, current->files);
	filp_close(filp, NULL);

restore_fs:
	set_fs(fs);