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

Commit 60f8a8d4 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
  fuse: fix large stack use
  fuse: cleanup in fuse_notify_inval_...()
parents b037bba7 b2d82ee3
Loading
Loading
Loading
Loading
+15 −15
Original line number Diff line number Diff line
@@ -865,13 +865,10 @@ static int fuse_notify_inval_inode(struct fuse_conn *fc, unsigned int size,

	down_read(&fc->killsb);
	err = -ENOENT;
	if (!fc->sb)
		goto err_unlock;

	if (fc->sb) {
		err = fuse_reverse_inval_inode(fc->sb, outarg.ino,
					       outarg.off, outarg.len);

err_unlock:
	}
	up_read(&fc->killsb);
	return err;

@@ -884,10 +881,15 @@ static int fuse_notify_inval_entry(struct fuse_conn *fc, unsigned int size,
				   struct fuse_copy_state *cs)
{
	struct fuse_notify_inval_entry_out outarg;
	int err = -EINVAL;
	char buf[FUSE_NAME_MAX+1];
	int err = -ENOMEM;
	char *buf;
	struct qstr name;

	buf = kzalloc(FUSE_NAME_MAX + 1, GFP_KERNEL);
	if (!buf)
		goto err;

	err = -EINVAL;
	if (size < sizeof(outarg))
		goto err;

@@ -910,16 +912,14 @@ static int fuse_notify_inval_entry(struct fuse_conn *fc, unsigned int size,

	down_read(&fc->killsb);
	err = -ENOENT;
	if (!fc->sb)
		goto err_unlock;

	if (fc->sb)
		err = fuse_reverse_inval_entry(fc->sb, outarg.parent, &name);

err_unlock:
	up_read(&fc->killsb);
	kfree(buf);
	return err;

err:
	kfree(buf);
	fuse_copy_finish(cs);
	return err;
}