* [PATCH resend] compat_ioctl: fix warning caused by qemu
@ 2011-07-01 9:33 Johannes Stezenbach
2011-07-01 14:46 ` Arnd Bergmann
0 siblings, 1 reply; 3+ messages in thread
From: Johannes Stezenbach @ 2011-07-01 9:33 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Kevin Wolf, kvm, linux-kernel, linux-fsdevel, Jens Axboe,
Alexander Viro
On Linux x86_64 host with 32bit userspace, running
qemu or even just "qemu-img create -f qcow2 some.img 1G"
causes a kernel warning:
ioctl32(qemu-img:5296): Unknown cmd fd(3) cmd(00005326){t:'S';sz:0} arg(7fffffff) on some.img
ioctl32(qemu-img:5296): Unknown cmd fd(3) cmd(801c0204){t:02;sz:28} arg(fff77350) on some.img
ioctl 00005326 is CDROM_DRIVE_STATUS,
ioctl 801c0204 is FDGETPRM.
The warning appears because the Linux compat-ioctl handler for these
ioctls only applies to block devices, while qemu also uses the ioctls on
plain files.
Signed-off-by: Johannes Stezenbach <js@sig21.net>
---
(resend with Cc: suggested by get_maintainer.pl)
discussed in http://lkml.kernel.org/r/20110617090424.GA19345@sig21.net
Arnd, is this what you had in mind, or did you mean to move
all floppy compat definitions? I decided to go with the
minimal change. Tested on both 2.6.39.2 and 3.0-rc5-63-g0d72c6f.
diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c
index cc3eb78..7b72502 100644
--- a/block/compat_ioctl.c
+++ b/block/compat_ioctl.c
@@ -208,19 +208,6 @@ static int compat_blkpg_ioctl(struct block_device *bdev, fmode_t mode,
#define BLKBSZSET_32 _IOW(0x12, 113, int)
#define BLKGETSIZE64_32 _IOR(0x12, 114, int)
-struct compat_floppy_struct {
- compat_uint_t size;
- compat_uint_t sect;
- compat_uint_t head;
- compat_uint_t track;
- compat_uint_t stretch;
- unsigned char gap;
- unsigned char rate;
- unsigned char spec1;
- unsigned char fmt_gap;
- const compat_caddr_t name;
-};
-
struct compat_floppy_drive_params {
char cmos;
compat_ulong_t max_dtr;
@@ -288,7 +275,6 @@ struct compat_floppy_write_errors {
#define FDSETPRM32 _IOW(2, 0x42, struct compat_floppy_struct)
#define FDDEFPRM32 _IOW(2, 0x43, struct compat_floppy_struct)
-#define FDGETPRM32 _IOR(2, 0x04, struct compat_floppy_struct)
#define FDSETDRVPRM32 _IOW(2, 0x90, struct compat_floppy_drive_params)
#define FDGETDRVPRM32 _IOR(2, 0x11, struct compat_floppy_drive_params)
#define FDGETDRVSTAT32 _IOR(2, 0x12, struct compat_floppy_drive_struct)
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
index 61abb63..8be086e 100644
--- a/fs/compat_ioctl.c
+++ b/fs/compat_ioctl.c
@@ -68,6 +68,8 @@
#ifdef CONFIG_BLOCK
#include <linux/loop.h>
+#include <linux/cdrom.h>
+#include <linux/fd.h>
#include <scsi/scsi.h>
#include <scsi/scsi_ioctl.h>
#include <scsi/sg.h>
@@ -944,6 +946,9 @@ COMPATIBLE_IOCTL(FIOQSIZE)
IGNORE_IOCTL(LOOP_CLR_FD)
/* md calls this on random blockdevs */
IGNORE_IOCTL(RAID_VERSION)
+/* qemu/qemu-img might call these two on plain files for probing */
+IGNORE_IOCTL(CDROM_DRIVE_STATUS)
+IGNORE_IOCTL(FDGETPRM32)
/* SG stuff */
COMPATIBLE_IOCTL(SG_SET_TIMEOUT)
COMPATIBLE_IOCTL(SG_GET_TIMEOUT)
diff --git a/include/linux/fd.h b/include/linux/fd.h
index f5d194a..c6a68d0 100644
--- a/include/linux/fd.h
+++ b/include/linux/fd.h
@@ -3,6 +3,7 @@
#include <linux/ioctl.h>
#include <linux/compiler.h>
+#include <linux/compat.h>
/* New file layout: Now the ioctl definitions immediately follow the
* definitions of the structures that they use */
@@ -377,4 +378,21 @@ struct floppy_raw_cmd {
#define FDEJECT _IO(2, 0x5a)
/* eject the disk */
+#ifdef CONFIG_COMPAT
+struct compat_floppy_struct {
+ compat_uint_t size;
+ compat_uint_t sect;
+ compat_uint_t head;
+ compat_uint_t track;
+ compat_uint_t stretch;
+ unsigned char gap;
+ unsigned char rate;
+ unsigned char spec1;
+ unsigned char fmt_gap;
+ const compat_caddr_t name;
+};
+
+#define FDGETPRM32 _IOR(2, 0x04, struct compat_floppy_struct)
+#endif
+
#endif
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH resend] compat_ioctl: fix warning caused by qemu
2011-07-01 9:33 [PATCH resend] compat_ioctl: fix warning caused by qemu Johannes Stezenbach
@ 2011-07-01 14:46 ` Arnd Bergmann
2011-07-01 20:34 ` Jens Axboe
0 siblings, 1 reply; 3+ messages in thread
From: Arnd Bergmann @ 2011-07-01 14:46 UTC (permalink / raw)
To: Johannes Stezenbach
Cc: Kevin Wolf, kvm, linux-kernel, linux-fsdevel, Jens Axboe,
Alexander Viro
On Friday 01 July 2011, Johannes Stezenbach wrote:
>
> On Linux x86_64 host with 32bit userspace, running
> qemu or even just "qemu-img create -f qcow2 some.img 1G"
> causes a kernel warning:
>
> ioctl32(qemu-img:5296): Unknown cmd fd(3) cmd(00005326){t:'S';sz:0} arg(7fffffff) on some.img
> ioctl32(qemu-img:5296): Unknown cmd fd(3) cmd(801c0204){t:02;sz:28} arg(fff77350) on some.img
>
> ioctl 00005326 is CDROM_DRIVE_STATUS,
> ioctl 801c0204 is FDGETPRM.
>
> The warning appears because the Linux compat-ioctl handler for these
> ioctls only applies to block devices, while qemu also uses the ioctls on
> plain files.
>
> Signed-off-by: Johannes Stezenbach <js@sig21.net>
Acked-by: Arnd Bergmann <arnd@arndb.de>
> ---
> (resend with Cc: suggested by get_maintainer.pl)
>
> discussed in http://lkml.kernel.org/r/20110617090424.GA19345@sig21.net
>
> Arnd, is this what you had in mind, or did you mean to move
> all floppy compat definitions? I decided to go with the
> minimal change. Tested on both 2.6.39.2 and 3.0-rc5-63-g0d72c6f.
Yes, that should be fine, unless Jens would like to see a different
solution for the struct definitions, e.g. moving all of the floppy
compat ioctl numbers to fd.h. I'm fine with it either way.
Arnd
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH resend] compat_ioctl: fix warning caused by qemu
2011-07-01 14:46 ` Arnd Bergmann
@ 2011-07-01 20:34 ` Jens Axboe
0 siblings, 0 replies; 3+ messages in thread
From: Jens Axboe @ 2011-07-01 20:34 UTC (permalink / raw)
To: Arnd Bergmann
Cc: Johannes Stezenbach, Kevin Wolf, kvm, linux-kernel, linux-fsdevel,
Alexander Viro
On 2011-07-01 16:46, Arnd Bergmann wrote:
> Yes, that should be fine, unless Jens would like to see a different
> solution for the struct definitions, e.g. moving all of the floppy
> compat ioctl numbers to fd.h. I'm fine with it either way.
Looks OK to me, I've queued it up for 3.1 with your ack. Thanks
Johannes.
--
Jens Axboe
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-07-01 20:34 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-01 9:33 [PATCH resend] compat_ioctl: fix warning caused by qemu Johannes Stezenbach
2011-07-01 14:46 ` Arnd Bergmann
2011-07-01 20:34 ` Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).