From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: Justin Forbes <jmforbes@linuxtx.org>,
Zwane Mwaikambo <zwane@arm.linux.org.uk>,
"Theodore Ts'o" <tytso@mit.edu>,
Randy Dunlap <rdunlap@xenotime.net>,
Dave Jones <davej@redhat.com>,
Chuck Wolber <chuckw@quantumlinux.com>,
Chris Wedgwood <reviews@ml.cw.f00f.org>,
Michael Krufky <mkrufky@linuxtv.org>,
Chuck Ebbert <cebbert@redhat.com>,
Domenico Andreoli <cavokz@gmail.com>, Willy Tarreau <w@1wt.eu>,
Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
Jake Edge <jake@lwn.net>, Eugene Teo <eteo@redhat.com>,
torvalds@linux-foundation.org, akpm@linux-foundation.org,
alan@lxorguk.ukuu.org.uk, Pete Zaitcev <zaitcev@redhat.com>
Subject: [patch 13/43] USB: usbmon: Implement compat_ioctl
Date: Fri, 30 Jan 2009 18:42:40 -0800 [thread overview]
Message-ID: <20090131024240.GN12368@kroah.com> (raw)
In-Reply-To: <20090131024158.GA12368@kroah.com>
[-- Attachment #1: usb-usbmon-implement-compat_ioctl.patch --]
[-- Type: text/plain, Size: 4368 bytes --]
2.6.28-stable review patch. If anyone has any objections, please let us know.
------------------
From: Pete Zaitcev <zaitcev@redhat.com>
commit 7abce6bedc118eb39fe177c2c26be5d008505c14 upstream.
Running a 32-bit usbmon(8) on 2.6.28-rc9 produces the following:
ioctl32(usbmon:28563): Unknown cmd fd(3) cmd(400c9206){t:ffffff92;sz:12} arg(ffd3f458) on /dev/usbmon0
It happens because the compatibility mode was implemented for 2.6.18
and not updated for the fsops.compat_ioctl API.
This patch relocates the pieces from under #ifdef CONFIG_COMPAT into
compat_ioctl with no other changes except one new whitespace.
Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/usb/mon/mon_bin.c | 105 ++++++++++++++++++++++++++++------------------
1 file changed, 66 insertions(+), 39 deletions(-)
--- a/drivers/usb/mon/mon_bin.c
+++ b/drivers/usb/mon/mon_bin.c
@@ -37,6 +37,7 @@
#define MON_IOCX_GET _IOW(MON_IOC_MAGIC, 6, struct mon_bin_get)
#define MON_IOCX_MFETCH _IOWR(MON_IOC_MAGIC, 7, struct mon_bin_mfetch)
#define MON_IOCH_MFLUSH _IO(MON_IOC_MAGIC, 8)
+
#ifdef CONFIG_COMPAT
#define MON_IOCX_GET32 _IOW(MON_IOC_MAGIC, 6, struct mon_bin_get32)
#define MON_IOCX_MFETCH32 _IOWR(MON_IOC_MAGIC, 7, struct mon_bin_mfetch32)
@@ -921,21 +922,6 @@ static int mon_bin_ioctl(struct inode *i
}
break;
-#ifdef CONFIG_COMPAT
- case MON_IOCX_GET32: {
- struct mon_bin_get32 getb;
-
- if (copy_from_user(&getb, (void __user *)arg,
- sizeof(struct mon_bin_get32)))
- return -EFAULT;
-
- ret = mon_bin_get_event(file, rp,
- compat_ptr(getb.hdr32), compat_ptr(getb.data32),
- getb.alloc32);
- }
- break;
-#endif
-
case MON_IOCX_MFETCH:
{
struct mon_bin_mfetch mfetch;
@@ -962,7 +948,57 @@ static int mon_bin_ioctl(struct inode *i
}
break;
+ case MON_IOCG_STATS: {
+ struct mon_bin_stats __user *sp;
+ unsigned int nevents;
+ unsigned int ndropped;
+
+ spin_lock_irqsave(&rp->b_lock, flags);
+ ndropped = rp->cnt_lost;
+ rp->cnt_lost = 0;
+ spin_unlock_irqrestore(&rp->b_lock, flags);
+ nevents = mon_bin_queued(rp);
+
+ sp = (struct mon_bin_stats __user *)arg;
+ if (put_user(rp->cnt_lost, &sp->dropped))
+ return -EFAULT;
+ if (put_user(nevents, &sp->queued))
+ return -EFAULT;
+
+ }
+ break;
+
+ default:
+ return -ENOTTY;
+ }
+
+ return ret;
+}
+
#ifdef CONFIG_COMPAT
+static long mon_bin_compat_ioctl(struct file *file,
+ unsigned int cmd, unsigned long arg)
+{
+ struct mon_reader_bin *rp = file->private_data;
+ int ret;
+
+ switch (cmd) {
+
+ case MON_IOCX_GET32: {
+ struct mon_bin_get32 getb;
+
+ if (copy_from_user(&getb, (void __user *)arg,
+ sizeof(struct mon_bin_get32)))
+ return -EFAULT;
+
+ ret = mon_bin_get_event(file, rp,
+ compat_ptr(getb.hdr32), compat_ptr(getb.data32),
+ getb.alloc32);
+ if (ret < 0)
+ return ret;
+ }
+ return 0;
+
case MON_IOCX_MFETCH32:
{
struct mon_bin_mfetch32 mfetch;
@@ -986,37 +1022,25 @@ static int mon_bin_ioctl(struct inode *i
return ret;
if (put_user(ret, &uptr->nfetch32))
return -EFAULT;
- ret = 0;
}
- break;
-#endif
-
- case MON_IOCG_STATS: {
- struct mon_bin_stats __user *sp;
- unsigned int nevents;
- unsigned int ndropped;
-
- spin_lock_irqsave(&rp->b_lock, flags);
- ndropped = rp->cnt_lost;
- rp->cnt_lost = 0;
- spin_unlock_irqrestore(&rp->b_lock, flags);
- nevents = mon_bin_queued(rp);
+ return 0;
- sp = (struct mon_bin_stats __user *)arg;
- if (put_user(rp->cnt_lost, &sp->dropped))
- return -EFAULT;
- if (put_user(nevents, &sp->queued))
- return -EFAULT;
+ case MON_IOCG_STATS:
+ return mon_bin_ioctl(NULL, file, cmd,
+ (unsigned long) compat_ptr(arg));
- }
- break;
+ case MON_IOCQ_URB_LEN:
+ case MON_IOCQ_RING_SIZE:
+ case MON_IOCT_RING_SIZE:
+ case MON_IOCH_MFLUSH:
+ return mon_bin_ioctl(NULL, file, cmd, arg);
default:
- return -ENOTTY;
+ ;
}
-
- return ret;
+ return -ENOTTY;
}
+#endif /* CONFIG_COMPAT */
static unsigned int
mon_bin_poll(struct file *file, struct poll_table_struct *wait)
@@ -1094,6 +1118,9 @@ static const struct file_operations mon_
/* .write = mon_text_write, */
.poll = mon_bin_poll,
.ioctl = mon_bin_ioctl,
+#ifdef CONFIG_COMPAT
+ .compat_ioctl = mon_bin_compat_ioctl,
+#endif
.release = mon_bin_release,
.mmap = mon_bin_mmap,
};
next prev parent reply other threads:[~2009-01-31 3:03 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20090131022548.656772939@mini.kroah.org>
2009-01-31 2:41 ` [patch 00/43] 2.6.28-stable review Greg KH
2009-01-31 2:42 ` [patch 01/43] ath5k: fix mesh point operation Greg KH
2009-01-31 2:42 ` [patch 02/43] mac80211: decrement ref count to netdev after launching mesh discovery Greg KH
2009-01-31 2:42 ` [patch 03/43] inotify: clean up inotify_read and fix locking problems Greg KH
2009-01-31 2:42 ` [patch 04/43] fuse: destroy bdi on umount Greg KH
2009-01-31 2:42 ` [patch 05/43] fuse: fix missing fput on error Greg KH
2009-01-31 2:42 ` [patch 06/43] fuse: fix NULL deref in fuse_file_alloc() Greg KH
2009-01-31 2:42 ` [patch 07/43] x86, mm: fix pte_free() Greg KH
2009-01-31 2:42 ` [patch 08/43] klist.c: bit 0 in pointer cant be used as flag Greg KH
2009-01-31 2:42 ` [patch 09/43] sysfs: fix problems with binary files Greg KH
2009-01-31 2:42 ` [patch 10/43] x86: fix page attribute corruption with cpa() Greg KH
2009-01-31 2:42 ` [patch 11/43] USB: fix toggle mismatch in disable_endpoint paths Greg KH
2009-01-31 2:42 ` [patch 12/43] sound: virtuoso: enable UART on Xonar HDAV1.3 Greg KH
2009-01-31 2:42 ` Greg KH [this message]
2009-01-31 2:42 ` [patch 14/43] USB: fix char-device disconnect handling Greg KH
2009-01-31 2:42 ` [patch 15/43] USB: storage: add unusual devs entry Greg KH
2009-01-31 2:42 ` [patch 16/43] alpha: nautilus - fix compile failure with gcc-4.3 Greg KH
2009-01-31 2:42 ` [patch 17/43] alpha: fix vmalloc breakage Greg KH
2009-01-31 2:42 ` [patch 18/43] resources: skip sanity check of busy resources Greg KH
2009-01-31 2:42 ` [patch 19/43] rtl8187: Add termination packet to prevent stall Greg KH
2009-01-31 2:42 ` [patch 20/43] it821x: Add ultra_mask quirk for Vortex86SX Greg KH
2009-01-31 2:42 ` [patch 21/43] libata: pata_via: support VX855, future chips whose IDE controller use 0x0571 Greg KH
2009-01-31 2:42 ` [patch 22/43] serial_8250: support for Sealevel Systems Model 7803 COMM+8 Greg KH
2009-01-31 2:43 ` [patch 23/43] drm: stash AGP include under the do-we-have-AGP ifdef Greg KH
2009-01-31 2:43 ` [patch 24/43] Fix OOPS in mmap_region() when merging adjacent VM_LOCKED file segments Greg KH
2009-01-31 2:43 ` [patch 25/43] bnx2x: Block nvram access when the device is inactive Greg KH
2009-01-31 2:43 ` [patch 26/43] ext3: Add sanity check to make_indexed_dir Greg KH
2009-01-31 2:43 ` [patch 27/43] rtl8187: Fix error in setting OFDM power settings for RTL8187L Greg KH
2009-01-31 2:44 ` [patch 28/43] epoll: drop max_user_instances and rely only on max_user_watches Greg KH
2009-01-31 2:44 ` [patch 29/43] gpiolib: fix request related issue Greg KH
2009-01-31 2:44 ` [patch 30/43] sgi-xpc: Remove NULL pointer dereference Greg KH
2009-01-31 2:44 ` [patch 31/43] sgi-xpc: ensure flags are updated before bte_copy Greg KH
2009-01-31 2:44 ` [patch 32/43] include/linux: Add bsg.h to the Kernel exported headers Greg KH
2009-01-31 2:44 ` [patch 33/43] ALSA: hda - Fix PCM reference NID for STAC/IDT analog outputs Greg KH
2009-01-31 2:44 ` [patch 34/43] ALSA: hda - add another MacBook Pro 4, 1 subsystem ID Greg KH
2009-01-31 2:44 ` [patch 35/43] ALSA: hda - Add quirk for HP DV6700 laptop Greg KH
2009-01-31 2:44 ` [patch 36/43] crypto: authenc - Fix zero-length IV crash Greg KH
2009-01-31 2:44 ` [patch 37/43] crypto: ccm - Fix handling of null assoc data Greg KH
2009-01-31 2:44 ` [patch 38/43] x86, pat: fix reserve_memtype() for legacy 1MB range Greg KH
2009-01-31 2:44 ` [patch 39/43] x86, pat: fix PTE corruption issue while mapping RAM using /dev/mem Greg KH
2009-01-31 2:44 ` [patch 40/43] PCI hotplug: fix lock imbalance in pciehp Greg KH
2009-01-31 2:44 ` [patch 41/43] dmaengine: fix dependency chaining Greg KH
2009-01-31 2:45 ` [patch 42/43] NET: net_namespace, fix lock imbalance Greg KH
2009-01-31 2:45 ` [patch 43/43] relay: fix lock imbalance in relay_late_setup_files Greg KH
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=20090131024240.GN12368@kroah.com \
--to=gregkh@suse.de \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=cavokz@gmail.com \
--cc=cebbert@redhat.com \
--cc=chuckw@quantumlinux.com \
--cc=davej@redhat.com \
--cc=eteo@redhat.com \
--cc=jake@lwn.net \
--cc=jmforbes@linuxtx.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mkrufky@linuxtv.org \
--cc=rbranco@la.checkpoint.com \
--cc=rdunlap@xenotime.net \
--cc=reviews@ml.cw.f00f.org \
--cc=stable@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=tytso@mit.edu \
--cc=w@1wt.eu \
--cc=zaitcev@redhat.com \
--cc=zwane@arm.linux.org.uk \
/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