Skip to contentSkip to conversation

linux-next: manual merge of the bkl-ioctl tree with my fixes tree

PATCH New Stephen Rothwell 2 participants 4 messages Apr 27, 2010 – Apr 28, 2010

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

Hi Frédéric,

Today's linux-next merge of the bkl-ioctl tree got a aconflics in drivers/block/pktcdvd.c between commit 30d32c9015af1fa56795c5ba8d7d6635d6bef8bf ("pktcdvd: improve BKL and compat_ioctl.c usage") from my fixes tree and commit 1dd97d3d546aa14db7efa5366b21d1336b91379e ("Rename 'struct file_operations' 'ioctl' fn pointer to 'bkl_ioctl'") from the bkl-ioctl tree.

I used the version from my fixes tree for today.

Arnd, are you going to submit this change to Linus sometime soon, or should I drop it?

Signature · 3 lines
Cheers,
Stephen Rothwell                    [email protected]
http://www.canb.auug.org.au/~sfr/
#1 lore raw
Quoted 8 lines · Stephen Rothwell

Today's linux-next merge of the bkl-ioctl tree got a aconflics in drivers/block/pktcdvd.c between commit 30d32c9015af1fa56795c5ba8d7d6635d6bef8bf ("pktcdvd: improve BKL and compat_ioctl.c usage") from my fixes tree and commit 1dd97d3d546aa14db7efa5366b21d1336b91379e ("Rename 'struct file_operations' 'ioctl' fn pointer to 'bkl_ioctl'") from the bkl-ioctl tree.

Quoted 4 lines

I used the version from my fixes tree for today.

Arnd, are you going to submit this change to Linus sometime soon, or should I drop it?

It's not clear yet how we do it. Ideally "pktcdvd: improve BKL and compat_ioctl.c usage" should find its way into -rc1 in some way, but we need to reshuffle the BKL removal trees to make that go in nicely.

Where is your fixes tree? Maybe Frederic can take all BKL related patches from that into one of his trees.

Arnd

#2 lore raw

Hi Arndt,

Quoted 7 lines · On Tue, 27 Apr 2010 11:02:35 +0200 Arnd Bergmann <[email protected]> wrote:

It's not clear yet how we do it. Ideally "pktcdvd: improve BKL and compat_ioctl.c usage" should find its way into -rc1 in some way, but we need to reshuffle the BKL removal trees to make that go in nicely.

Where is your fixes tree? Maybe Frederic can take all BKL related patches from that into one of his trees.

My fixes tree is here: ssh://master.kernel.org/~sfr/next-fixes.git it currently only contains your pktcdvd patch. My understanding was that this patch was a fix for a build problem with Linus' tree.

Signature · 3 lines
Cheers,
Stephen Rothwell                    [email protected]
http://www.canb.auug.org.au/~sfr/
#3 lore raw

PATCH 1/1 pktcdvd: improve BKL and compat_ioctl.c usage

The pktcdvd driver uses proper locking and does not need the BKL in the ioctl and llseek functions of the character device, so kill both. Moving the compat_ioctl handling from common code into the driver itself fixes build problems when CONFIG_BLOCK is disabled.

---

Quoted 3 lines · Stephen Rothwell

My fixes tree is here: ssh://master.kernel.org/~sfr/next-fixes.git it currently only contains your pktcdvd patch. My understanding was that this patch was a fix for a build problem with Linus' tree.

Ah, I had forgotten that this was still needed and Jens or Peter obviously never picked it up.

Linus, could you merge this now to fix building with CONFIG_BLOCK disabled? It's fallout of a patch c5ecc484c "pktcdvd: use BIO list management functions", but I fixed it because the problem appeared in compat_ioctl handling. It now came up because the patch conflicted with the BKL pushdown, which the original patch does as a side-effect.

Arnd

drivers/block/pktcdvd.c +14 -3
index ddf1942..8a549db 100644
@@ -48,6 +48,7 @@
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
+#include <linux/compat.h>
 #include <linux/kthread.h>
 #include <linux/errno.h>
 #include <linux/spinlock.h>
@@ -2984,7 +2985,7 @@ static void pkt_get_status(struct pkt_ctrl_command *ctrl_cmd)
 	mutex_unlock(&ctl_mutex);
 }
 
-static int pkt_ctl_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
+static long pkt_ctl_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 {
 	void __user *argp = (void __user *)arg;
 	struct pkt_ctrl_command ctrl_cmd;
@@ -3021,10 +3022,20 @@ static int pkt_ctl_ioctl(struct inode *inode, struct file *file, unsigned int cm
 	return ret;
 }
 
+#ifdef CONFIG_COMPAT
+static long pkt_ctl_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+{
+	return pkt_ctl_ioctl(file, cmd, (unsigned long)compat_ptr(arg));
+}
+#endif
 
 static const struct file_operations pkt_ctl_fops = {
-	.ioctl	 = pkt_ctl_ioctl,
-	.owner	 = THIS_MODULE,
+	.open		= nonseekable_open,
+	.unlocked_ioctl	= pkt_ctl_ioctl,
+#ifdef CONFIG_COMPAT
+	.compat_ioctl	= pkt_ctl_compat_ioctl,
+#endif
+	.owner		= THIS_MODULE,
 };
 
 static struct miscdevice pkt_misc = {
fs/compat_ioctl.c +0 -3
index c32a1b6..641640d 100644
@@ -102,7 +102,6 @@
 #include <linux/nbd.h>
 #include <linux/random.h>
 #include <linux/filter.h>
-#include <linux/pktcdvd.h>
 
 #include <linux/hiddev.h>
 
@@ -1126,8 +1125,6 @@ COMPATIBLE_IOCTL(PPGETMODE)
 COMPATIBLE_IOCTL(PPGETPHASE)
 COMPATIBLE_IOCTL(PPGETFLAGS)
 COMPATIBLE_IOCTL(PPSETFLAGS)
-/* pktcdvd */
-COMPATIBLE_IOCTL(PACKET_CTRL_CMD)
 /* Big A */
 /* sparc only */
 /* Big Q for sound/OSS */