From: "Michael S. Tsirkin" <mst@mellanox.co.il>
To: Chris Wright <chrisw@osdl.org>
Cc: Andi Kleen <ak@muc.de>,
akpm@osdl.org, hch@infradead.org, linux-kernel@vger.kernel.org,
davem@davemloft.net
Subject: Re: [PATCH 1/5] compat_ioctl call seems to miss a security hook
Date: Thu, 20 Jan 2005 02:28:06 +0200 [thread overview]
Message-ID: <20050120002806.GA16674@mellanox.co.il> (raw)
In-Reply-To: <20050118112220.X24171@build.pdx.osdl.net>
Hello!
Quoting r. Chris Wright (chrisw@osdl.org) "Re: [PATCH 1/5] compat_ioctl call seems to miss a security hook":
> * Michael S. Tsirkin (mst@mellanox.co.il) wrote:
> > diff -rup linux-2.6.10-orig/fs/compat.c linux-2.6.10-ioctl-sym/fs/compat.c
> > --- linux-2.6.10-orig/fs/compat.c 2005-01-18 10:58:33.609880024 +0200
> > +++ linux-2.6.10-ioctl-sym/fs/compat.c 2005-01-18 10:54:26.289478440 +0200
> > @@ -437,6 +437,11 @@ asmlinkage long compat_sys_ioctl(unsigne
> > if (!filp)
> > goto out;
> >
> > + /* RED-PEN how should LSM module know it's handling 32bit? */
> > + error = security_file_ioctl(filp, cmd, arg);
> > + if (error)
> > + goto out_fput;
> > +
>
> This is now called twice in the plain do_ioctl: case. A generic vfs handler
> could alleviate that.
I'm all for it, but the way the patch below works, we could end up
calling ->ioctl or ->unlocked_ioctl from the compat
syscall, and we dont want that.
MST
> ===== fs/ioctl.c 1.15 vs edited =====
> --- 1.15/fs/ioctl.c 2005-01-15 14:31:01 -08:00
> +++ edited/fs/ioctl.c 2005-01-18 11:18:33 -08:00
> @@ -77,21 +77,10 @@ static int file_ioctl(struct file *filp,
> return do_ioctl(filp, cmd, arg);
> }
>
> -
> -asmlinkage long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
> +int vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd, unsigned long arg)
> {
> - struct file * filp;
> unsigned int flag;
> - int on, error = -EBADF;
> - int fput_needed;
> -
> - filp = fget_light(fd, &fput_needed);
> - if (!filp)
> - goto out;
> -
> - error = security_file_ioctl(filp, cmd, arg);
> - if (error)
> - goto out_fput;
> + int on, error = 0;
>
> switch (cmd) {
> case FIOCLEX:
> @@ -157,6 +146,24 @@ asmlinkage long sys_ioctl(unsigned int f
> error = do_ioctl(filp, cmd, arg);
> break;
> }
> + return error;
> +}
> +
> +asmlinkage long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
> +{
> + struct file * filp;
> + int error = -EBADF;
> + int fput_needed;
> +
> + filp = fget_light(fd, &fput_needed);
> + if (!filp)
> + goto out;
> +
> + error = security_file_ioctl(filp, cmd, arg);
> + if (error)
> + goto out_fput;
> +
> + error = vfs_ioctl(filp, fd, cmd, arg);
> out_fput:
> fput_light(filp, fput_needed);
> out:
> ===== fs/compat.c 1.48 vs edited =====
> --- 1.48/fs/compat.c 2005-01-15 14:31:01 -08:00
> +++ edited/fs/compat.c 2005-01-18 11:07:56 -08:00
> @@ -437,6 +437,11 @@ asmlinkage long compat_sys_ioctl(unsigne
> if (!filp)
> goto out;
>
> + /* RED-PEN how should LSM module know it's handling 32bit? */
> + error = security_file_ioctl(filp, cmd, arg);
> + if (error)
> + goto out_fput;
> +
> if (filp->f_op && filp->f_op->compat_ioctl) {
> error = filp->f_op->compat_ioctl(filp, cmd, arg);
> if (error != -ENOIOCTLCMD)
> @@ -477,7 +482,7 @@ asmlinkage long compat_sys_ioctl(unsigne
>
> up_read(&ioctl32_sem);
> do_ioctl:
> - error = sys_ioctl(fd, cmd, arg);
> + error = vfs_ioctl(filp, fd, cmd, arg);
> out_fput:
> fput_light(filp, fput_needed);
> out:
> ===== include/linux/fs.h 1.373 vs edited =====
> --- 1.373/include/linux/fs.h 2005-01-15 14:31:01 -08:00
> +++ edited/include/linux/fs.h 2005-01-18 11:10:54 -08:00
> @@ -1564,6 +1564,8 @@ extern int vfs_stat(char __user *, struc
> extern int vfs_lstat(char __user *, struct kstat *);
> extern int vfs_fstat(unsigned int, struct kstat *);
>
> +extern int vfs_ioctl(struct file *, unsigned int, unsigned int, unsigned long);
> +
> extern struct file_system_type *get_fs_type(const char *name);
> extern struct super_block *get_super(struct block_device *);
> extern struct super_block *user_get_super(dev_t);
next prev parent reply other threads:[~2005-01-20 0:30 UTC|newest]
Thread overview: 152+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-18 7:21 [PATCH] Some fixes for compat ioctl Andi Kleen
2005-01-18 10:34 ` Michael S. Tsirkin
2005-01-18 10:45 ` [PATCH 1/5] compat_ioctl call seems to miss a security hook Michael S. Tsirkin
2005-01-18 19:22 ` Chris Wright
2005-01-20 0:28 ` Michael S. Tsirkin [this message]
2005-01-20 0:43 ` Chris Wright
2005-01-20 1:06 ` Michael S. Tsirkin
2005-01-20 1:16 ` Chris Wright
2005-01-20 1:42 ` Michael S. Tsirkin
2005-01-18 10:48 ` [PATCH 2/5] socket ioctl fix (from Andi) Michael S. Tsirkin
2005-01-18 10:55 ` Christoph Hellwig
2005-01-18 11:01 ` Andi Kleen
2005-01-18 10:52 ` [PATCH 3/5] make common ioctls apply for compat Michael S. Tsirkin
2005-01-18 10:57 ` [PATCH 4/5] reminder comment about register_ioctl32_conversion Michael S. Tsirkin
2005-01-18 11:04 ` [PATCH 5/5] symmetry between compat_ioctl and unlocked_ioctl Michael S. Tsirkin
2005-01-24 10:15 ` 2.6.11-rc2-mm1 Andrew Morton
2005-01-24 10:36 ` 2.6.11-rc2-mm1 Adrian Bunk
2005-01-24 11:17 ` 2.6.11-rc2-mm1: v4l-saa7134-module compile error Adrian Bunk
2005-01-24 13:57 ` Gerd Knorr
2005-01-24 17:45 ` Adrian Bunk
2005-01-25 10:15 ` Gerd Knorr
2005-01-25 10:38 ` Adrian Bunk
2005-01-24 11:56 ` 2.6.11-rc2-mm1 Brice Goglin
2005-01-24 13:41 ` 2.6.11-rc2-mm1 Brice Goglin
2005-01-24 14:35 ` 2.6.11-rc2-mm1 Florian Bohrer
2005-01-24 18:52 ` 2.6.11-rc2-mm1 Dave Jones
2005-01-24 20:44 ` 2.6.11-rc2-mm1 Dave Jones
2005-01-24 21:31 ` 2.6.11-rc2-mm1 Brice Goglin
2005-01-25 19:38 ` 2.6.11-rc2-mm1 Dave Jones
2005-01-25 19:58 ` 2.6.11-rc2-mm1 Brice Goglin
2005-01-25 20:29 ` 2.6.11-rc2-mm1 Dave Jones
2005-01-24 12:12 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-24 20:36 ` 2.6.11-rc2-mm1 Karsten Keil
2005-01-24 23:26 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-25 0:35 ` 2.6.11-rc2-mm1 Karsten Keil
2005-01-24 23:32 ` 2.6.11-rc2-mm1 Bartlomiej Zolnierkiewicz
2005-01-24 21:03 ` 2.6.11-rc2-mm1 Andrew Morton
2005-01-24 12:17 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-31 22:42 ` [patch] generic notification layer Robert Love
2005-02-07 11:57 ` 2.6.11-rc2-mm1 Ingo Molnar
2005-02-07 17:30 ` 2.6.11-rc2-mm1 Robert Love
2005-02-07 21:02 ` 2.6.11-rc2-mm1 John McCutchan
2005-01-24 12:25 ` [-mm patch] fix SuperIO compilation Adrian Bunk
2005-01-24 12:34 ` Christoph Hellwig
2005-01-24 13:04 ` Evgeniy Polyakov
2005-01-24 13:56 ` Evgeniy Polyakov
2005-01-24 14:14 ` [1/1] superio: remove unneded exports and make some functions static Evgeniy Polyakov
2005-01-25 6:19 ` Greg KH
2005-01-24 12:48 ` 2.6.11-rc2-mm1: DVB compile error Adrian Bunk
2005-01-24 23:56 ` [linux-dvb-maintainer] " Johannes Stezenbach
2005-01-24 13:52 ` 2.6.11-rc2-mm1 Roman Zippel
2005-01-24 14:24 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-24 14:58 ` 2.6.11-rc2-mm1 Benoit Boissinot
2005-01-24 15:11 ` 2.6.11-rc2-mm1 [compile fix] Benoit Boissinot
2005-01-24 17:25 ` Adrian Bunk
2005-01-24 17:54 ` 2.6.11-rc2-mm1: SuperIO scx200 breakage Adrian Bunk
2005-01-24 18:43 ` Evgeniy Polyakov
2005-01-24 18:29 ` Adrian Bunk
2005-01-24 19:19 ` Evgeniy Polyakov
2005-01-24 19:03 ` Adrian Bunk
2005-01-24 19:46 ` Evgeniy Polyakov
2005-01-24 18:41 ` Jurriaan
2005-01-24 19:23 ` Evgeniy Polyakov
2005-01-24 19:05 ` Adrian Bunk
2005-01-24 19:39 ` Evgeniy Polyakov
2005-01-24 19:32 ` Dmitry Torokhov
2005-01-24 20:28 ` Evgeniy Polyakov
2005-01-27 15:19 ` Bill Davidsen
2005-01-27 16:21 ` Evgeniy Polyakov
2005-01-27 23:12 ` Bill Davidsen
2005-01-24 20:33 ` Christoph Hellwig
2005-01-24 21:10 ` Evgeniy Polyakov
2005-01-24 21:34 ` Greg KH
2005-01-24 21:47 ` Christoph Hellwig
2005-01-25 6:02 ` Greg KH
2005-01-25 7:11 ` Christoph Hellwig
2005-01-25 18:59 ` Jean Delvare
2005-01-25 21:39 ` Evgeniy Polyakov
2005-01-25 21:40 ` Jean Delvare
2005-01-25 22:35 ` Evgeniy Polyakov
2005-01-26 9:55 ` Jean Delvare
2005-01-26 10:55 ` Evgeniy Polyakov
2005-01-26 14:34 ` Jean Delvare
2005-01-26 16:10 ` Evgeniy Polyakov
2005-01-26 19:20 ` Jean Delvare
2005-01-26 20:21 ` Evgeniy Polyakov
2005-01-26 10:14 ` Christoph Hellwig
2005-01-26 10:59 ` Evgeniy Polyakov
2005-01-26 14:00 ` Dmitry Torokhov
2005-01-26 16:38 ` Evgeniy Polyakov
2005-01-26 18:19 ` Adrian Bunk
2005-01-26 19:27 ` Evgeniy Polyakov
2005-01-27 10:20 ` Adrian Bunk
2005-01-27 11:53 ` Evgeniy Polyakov
2005-01-26 18:06 ` Adrian Bunk
2005-01-26 13:12 ` Russell King
2005-01-26 20:01 ` Christoph Hellwig
2005-01-24 18:58 ` 2.6.11-rc2-mm1 Benoit Boissinot
2005-01-24 19:09 ` 2.6.11-rc2-mm1 Adrian Bunk
2005-01-24 19:44 ` 2.6.11-rc2-mm1 - fix a typo in nfs3proc.c Benoit Boissinot
2005-01-24 20:24 ` 2.6.11-rc2-mm1 - compile fix Benoit Boissinot
2005-01-24 20:26 ` [PATCH] move common compat ioctls to hash Michael S. Tsirkin
2005-01-25 6:17 ` Andi Kleen
2005-01-26 8:40 ` Michael S. Tsirkin
2005-01-25 0:03 ` 2.6.11-rc2-mm1: fuse patch needs new libs Sytse Wielinga
2005-01-25 7:31 ` Miklos Szeredi
2005-01-27 15:45 ` Bill Davidsen
2005-01-27 15:56 ` Sytse Wielinga
2005-01-27 16:11 ` Miklos Szeredi
2005-01-27 18:09 ` Christoph Hellwig
2005-01-25 1:01 ` 2.6.11-rc2-mm1 Brice Goglin
2005-01-25 1:30 ` 2.6.11-rc2-mm1 (AE_AML_NO_OPERAND) Len Brown
2005-01-25 18:41 ` 2.6.11-rc2-mm1 Pavel Machek
2005-01-25 19:10 ` 2.6.11-rc2-mm1 Espen Fjellvær Olsen
2005-01-25 12:53 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-25 14:11 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-25 14:23 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-25 15:24 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-25 15:34 ` 2.6.11-rc2-mm1 Bartlomiej Zolnierkiewicz
2005-01-25 16:04 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-25 18:21 ` 2.6.11-rc2-mm1 Jörn Engel
2005-01-25 21:17 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 2:20 ` 2.6.11-rc2-mm1 Jörn Engel
2005-01-25 15:36 ` 2.6.11-rc2-mm1 Paulo Marques
2005-01-25 21:08 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-25 16:11 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-25 21:14 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 4:57 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 8:25 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 13:46 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 14:59 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 15:26 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 15:54 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 16:25 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 16:46 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 16:55 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 17:39 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 18:26 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 20:07 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 20:22 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-27 17:33 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-25 22:42 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-26 8:31 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 13:32 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 14:44 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-25 19:35 ` 2.6.11-rc2-mm1 Pavel Machek
2005-01-25 19:12 ` 2.6.11-rc2-mm1 Marcos D. Marado Torres
2005-01-25 23:07 ` 2.6.11-rc2-mm1 Barry K. Nathan
2005-01-26 2:40 ` 2.6.11-rc2-mm1 William Lee Irwin III
2005-01-26 4:44 ` [PATCH] ppc64: fix use kref for device_node refcounting Nathan Lynch
2005-01-27 6:18 ` 2.6.11-rc2-mm1 William Lee Irwin III
2005-01-27 9:14 ` 2.6.11-rc2-mm1 William Lee Irwin III
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050120002806.GA16674@mellanox.co.il \
--to=mst@mellanox.co.il \
--cc=ak@muc.de \
--cc=akpm@osdl.org \
--cc=chrisw@osdl.org \
--cc=davem@davemloft.net \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome