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

Commit a3816ab0 authored by Joe Perches's avatar Joe Perches Committed by Steven Rostedt
Browse files

fs: Convert show_fdinfo functions to void

seq_printf functions shouldn't really check the return value.
Checking seq_has_overflowed() occasionally is used instead.

Update vfs documentation.

Link: http://lkml.kernel.org/p/e37e6e7b76acbdcc3bb4ab2a57c8f8ca1ae11b9a.1412031505.git.joe@perches.com



Cc: David S. Miller <davem@davemloft.net>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarJoe Perches <joe@perches.com>
[ did a few clean ups ]
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent f365ef9b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -828,7 +828,7 @@ struct file_operations {
	ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int);
	int (*setlease)(struct file *, long arg, struct file_lock **, void **);
	long (*fallocate)(struct file *, int mode, loff_t offset, loff_t len);
	int (*show_fdinfo)(struct seq_file *m, struct file *f);
	void (*show_fdinfo)(struct seq_file *m, struct file *f);
};

Again, all methods are called without any locks being held, unless
+2 −2
Original line number Diff line number Diff line
@@ -2209,7 +2209,7 @@ static int tun_chr_close(struct inode *inode, struct file *file)
}

#ifdef CONFIG_PROC_FS
static int tun_chr_show_fdinfo(struct seq_file *m, struct file *f)
static void tun_chr_show_fdinfo(struct seq_file *m, struct file *f)
{
	struct tun_struct *tun;
	struct ifreq ifr;
@@ -2225,7 +2225,7 @@ static int tun_chr_show_fdinfo(struct seq_file *m, struct file *f)
	if (tun)
		tun_put(tun);

	return seq_printf(m, "iff:\t%s\n", ifr.ifr_name);
	seq_printf(m, "iff:\t%s\n", ifr.ifr_name);
}
#endif

+3 −6
Original line number Diff line number Diff line
@@ -287,17 +287,14 @@ static ssize_t eventfd_write(struct file *file, const char __user *buf, size_t c
}

#ifdef CONFIG_PROC_FS
static int eventfd_show_fdinfo(struct seq_file *m, struct file *f)
static void eventfd_show_fdinfo(struct seq_file *m, struct file *f)
{
	struct eventfd_ctx *ctx = f->private_data;
	int ret;

	spin_lock_irq(&ctx->wqh.lock);
	ret = seq_printf(m, "eventfd-count: %16llx\n",
	seq_printf(m, "eventfd-count: %16llx\n",
		   (unsigned long long)ctx->count);
	spin_unlock_irq(&ctx->wqh.lock);

	return ret;
}
#endif

+5 −8
Original line number Diff line number Diff line
@@ -870,25 +870,22 @@ static unsigned int ep_eventpoll_poll(struct file *file, poll_table *wait)
}

#ifdef CONFIG_PROC_FS
static int ep_show_fdinfo(struct seq_file *m, struct file *f)
static void ep_show_fdinfo(struct seq_file *m, struct file *f)
{
	struct eventpoll *ep = f->private_data;
	struct rb_node *rbp;
	int ret = 0;

	mutex_lock(&ep->mtx);
	for (rbp = rb_first(&ep->rbr); rbp; rbp = rb_next(rbp)) {
		struct epitem *epi = rb_entry(rbp, struct epitem, rbn);

		ret = seq_printf(m, "tfd: %8d events: %8x data: %16llx\n",
		seq_printf(m, "tfd: %8d events: %8x data: %16llx\n",
			   epi->ffd.fd, epi->event.events,
			   (long long)epi->event.data);
		if (ret)
		if (seq_has_overflowed(m))
			break;
	}
	mutex_unlock(&ep->mtx);

	return ret;
}
#endif

+32 −46
Original line number Diff line number Diff line
@@ -20,25 +20,24 @@

#if defined(CONFIG_INOTIFY_USER) || defined(CONFIG_FANOTIFY)

static int show_fdinfo(struct seq_file *m, struct file *f,
		       int (*show)(struct seq_file *m, struct fsnotify_mark *mark))
static void show_fdinfo(struct seq_file *m, struct file *f,
			void (*show)(struct seq_file *m,
				     struct fsnotify_mark *mark))
{
	struct fsnotify_group *group = f->private_data;
	struct fsnotify_mark *mark;
	int ret = 0;

	mutex_lock(&group->mark_mutex);
	list_for_each_entry(mark, &group->marks_list, g_list) {
		ret = show(m, mark);
		if (ret)
		show(m, mark);
		if (seq_has_overflowed(m))
			break;
	}
	mutex_unlock(&group->mark_mutex);
	return ret;
}

#if defined(CONFIG_EXPORTFS)
static int show_mark_fhandle(struct seq_file *m, struct inode *inode)
static void show_mark_fhandle(struct seq_file *m, struct inode *inode)
{
	struct {
		struct file_handle handle;
@@ -52,71 +51,62 @@ static int show_mark_fhandle(struct seq_file *m, struct inode *inode)
	ret = exportfs_encode_inode_fh(inode, (struct fid *)f.handle.f_handle, &size, 0);
	if ((ret == FILEID_INVALID) || (ret < 0)) {
		WARN_ONCE(1, "Can't encode file handler for inotify: %d\n", ret);
		return 0;
		return;
	}

	f.handle.handle_type = ret;
	f.handle.handle_bytes = size * sizeof(u32);

	ret = seq_printf(m, "fhandle-bytes:%x fhandle-type:%x f_handle:",
	seq_printf(m, "fhandle-bytes:%x fhandle-type:%x f_handle:",
		   f.handle.handle_bytes, f.handle.handle_type);

	for (i = 0; i < f.handle.handle_bytes; i++)
		ret |= seq_printf(m, "%02x", (int)f.handle.f_handle[i]);

	return ret;
		seq_printf(m, "%02x", (int)f.handle.f_handle[i]);
}
#else
static int show_mark_fhandle(struct seq_file *m, struct inode *inode)
static void show_mark_fhandle(struct seq_file *m, struct inode *inode)
{
	return 0;
}
#endif

#ifdef CONFIG_INOTIFY_USER

static int inotify_fdinfo(struct seq_file *m, struct fsnotify_mark *mark)
static void inotify_fdinfo(struct seq_file *m, struct fsnotify_mark *mark)
{
	struct inotify_inode_mark *inode_mark;
	struct inode *inode;
	int ret = 0;

	if (!(mark->flags & (FSNOTIFY_MARK_FLAG_ALIVE | FSNOTIFY_MARK_FLAG_INODE)))
		return 0;
		return;

	inode_mark = container_of(mark, struct inotify_inode_mark, fsn_mark);
	inode = igrab(mark->i.inode);
	if (inode) {
		ret = seq_printf(m, "inotify wd:%x ino:%lx sdev:%x "
				 "mask:%x ignored_mask:%x ",
				 inode_mark->wd, inode->i_ino,
				 inode->i_sb->s_dev,
		seq_printf(m, "inotify wd:%x ino:%lx sdev:%x mask:%x ignored_mask:%x ",
			   inode_mark->wd, inode->i_ino, inode->i_sb->s_dev,
			   mark->mask, mark->ignored_mask);
		ret |= show_mark_fhandle(m, inode);
		ret |= seq_putc(m, '\n');
		show_mark_fhandle(m, inode);
		seq_putc(m, '\n');
		iput(inode);
	}

	return ret;
}

int inotify_show_fdinfo(struct seq_file *m, struct file *f)
void inotify_show_fdinfo(struct seq_file *m, struct file *f)
{
	return show_fdinfo(m, f, inotify_fdinfo);
	show_fdinfo(m, f, inotify_fdinfo);
}

#endif /* CONFIG_INOTIFY_USER */

#ifdef CONFIG_FANOTIFY

static int fanotify_fdinfo(struct seq_file *m, struct fsnotify_mark *mark)
static void fanotify_fdinfo(struct seq_file *m, struct fsnotify_mark *mark)
{
	unsigned int mflags = 0;
	struct inode *inode;
	int ret = 0;

	if (!(mark->flags & FSNOTIFY_MARK_FLAG_ALIVE))
		return 0;
		return;

	if (mark->flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY)
		mflags |= FAN_MARK_IGNORED_SURV_MODIFY;
@@ -124,26 +114,22 @@ static int fanotify_fdinfo(struct seq_file *m, struct fsnotify_mark *mark)
	if (mark->flags & FSNOTIFY_MARK_FLAG_INODE) {
		inode = igrab(mark->i.inode);
		if (!inode)
			goto out;
		ret = seq_printf(m, "fanotify ino:%lx sdev:%x "
				 "mflags:%x mask:%x ignored_mask:%x ",
			return;
		seq_printf(m, "fanotify ino:%lx sdev:%x mflags:%x mask:%x ignored_mask:%x ",
			   inode->i_ino, inode->i_sb->s_dev,
			   mflags, mark->mask, mark->ignored_mask);
		ret |= show_mark_fhandle(m, inode);
		ret |= seq_putc(m, '\n');
		show_mark_fhandle(m, inode);
		seq_putc(m, '\n');
		iput(inode);
	} else if (mark->flags & FSNOTIFY_MARK_FLAG_VFSMOUNT) {
		struct mount *mnt = real_mount(mark->m.mnt);

		ret = seq_printf(m, "fanotify mnt_id:%x mflags:%x mask:%x "
				 "ignored_mask:%x\n", mnt->mnt_id, mflags,
				 mark->mask, mark->ignored_mask);
		seq_printf(m, "fanotify mnt_id:%x mflags:%x mask:%x ignored_mask:%x\n",
			   mnt->mnt_id, mflags, mark->mask, mark->ignored_mask);
	}
out:
	return ret;
}

int fanotify_show_fdinfo(struct seq_file *m, struct file *f)
void fanotify_show_fdinfo(struct seq_file *m, struct file *f)
{
	struct fsnotify_group *group = f->private_data;
	unsigned int flags = 0;
@@ -169,7 +155,7 @@ int fanotify_show_fdinfo(struct seq_file *m, struct file *f)
	seq_printf(m, "fanotify flags:%x event-flags:%x\n",
		   flags, group->fanotify_data.f_flags);

	return show_fdinfo(m, f, fanotify_fdinfo);
	show_fdinfo(m, f, fanotify_fdinfo);
}

#endif /* CONFIG_FANOTIFY */
Loading