proc_mknod() should check the mode parameter

Message ID 20010418222826.N6985@arthur.ubicom.tudelft.nl
State New, archived
Headers show
Series
  • proc_mknod() should check the mode parameter
Related show

Commit Message

Erik Mouw April 18, 2001, 8:28 p.m. UTC
Hi all,

While documenting the procfs interface (more of that later), I came
across proc_mknod() which is supposed to be used to create devices in
the procfs. IMHO it should therefore check if the mode parameter
contains S_IFBLK or S_IFCHR. Here is a patch (against linux-2.4.4-pre3)
to do that:




Erik

Comments

Alexander Viro April 18, 2001, 9:51 p.m. UTC | #1
On Wed, 18 Apr 2001, Erik Mouw wrote:

> Hi all,
> 
> While documenting the procfs interface (more of that later), I came
> across proc_mknod() which is supposed to be used to create devices in
> the procfs. IMHO it should therefore check if the mode parameter
> contains S_IFBLK or S_IFCHR.

Why? All callers of proc_mknod() are in the kernel and they should
know better. I could understand
	if (....)
		BUG();
but silently doing nothing is really odd.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Patch

Index: fs/proc/generic.c
===================================================================
RCS file: /home/erik/cvsroot/elinux/fs/proc/generic.c,v
retrieving revision 1.1.1.16
diff -u -r1.1.1.16 generic.c
--- fs/proc/generic.c	2001/04/08 23:34:42	1.1.1.16
+++ fs/proc/generic.c	2001/04/18 20:20:39
@@ -445,6 +445,9 @@ 
 	const char *fn = name;
 	int len;
 
+	if (! (S_ISCHR(mode) || S_ISBLK(mode)))
+		goto out;
+
 	if (!parent && xlate_proc_name(name, &parent, &fn) != 0)
 		goto out;
 	len = strlen(fn);