Message ID | 5683DB05.7000704@linaro.org |
---|---|
State | New |
Headers | show |
On Wed, Dec 30, 2015 at 09:24:21PM +0800, Bamvor Jian Zhang wrote: > Hi, Sudip > > On 12/30/2015 07:16 PM, Sudip Mukherjee wrote: > > On Fri, Dec 18, 2015 at 12:12:05AM +0100, Arnd Bergmann wrote: > >> On Thursday 17 December 2015 17:58:52 Bamvor Jian Zhang wrote: > >>> The arg of ioctl in ppdev is the pointer of integer except the > >>> timeval in PPSETTIME, PPGETTIME. Different size of timeval > >>> is already supported by the previous patches. So, it is safe > >>> to add compat support. > >>> > >>> Signed-off-by: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org> > >>> > >> > >> Reviewed-by: Arnd Bergmann <arnd@arndb.de> > >> > >> (I think I replied with the reviewed-by tag before to this patch) > > > > I was testing this series today. And it is breaking my userspace code. I > > am attaching my userspace code for you to check. Its very simple > > userspace code: > > 1: open > > 2: ioctl to claim > > 3: ioctl - PPGETTIME > > 4: ioctl - PPSETTIME > > 5: ioctl - PPGETTIME > > 6: ioctl - release > > 7: close > > > > Without this series it works as expected. > > > > With this series applied, the userspace code prints the error message: > > PPNEGOT: Bad address > > > > I traced it with strace and: > > ioctl(3, PPGETTIME, 0xbfe91508) = -1 EFAULT (Bad address) > Thanks for your testing. It seems that I misuse the parameters. Could > you please apply the following patch and try it again? > There is no parport in my computer, Thanks. > > diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c > index 31bc7b7..9e98d01 100644 > --- a/drivers/char/ppdev.c > +++ b/drivers/char/ppdev.c > @@ -636,7 +636,7 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > if ((time32[0] < 0) || (time32[1] < 0)) > return -EINVAL; > > - if (copy_to_user(time32, argp, sizeof(time32))) > + if (copy_to_user(argp, time32, sizeof(time32))) > return -EFAULT; > > return 0; > @@ -648,7 +648,7 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > if ((time64[0] < 0) || (time64[1] < 0)) > return -EINVAL; > > - if (copy_to_user(time64, argp, sizeof(time64))) > + if (copy_to_user(argp, time64, sizeof(time64))) > return -EFAULT; > > return 0; It works. Tomorrow I will test it on a 64 bit system also. regards sudip -- 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/
On Wednesday 30 December 2015 21:24:21 Bamvor Jian Zhang wrote: > diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c > index 31bc7b7..9e98d01 100644 > --- a/drivers/char/ppdev.c > +++ b/drivers/char/ppdev.c > @@ -636,7 +636,7 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > if ((time32[0] < 0) || (time32[1] < 0)) > return -EINVAL; > > - if (copy_to_user(time32, argp, sizeof(time32))) > + if (copy_to_user(argp, time32, sizeof(time32))) > return -EFAULT; > > return 0; > @@ -648,7 +648,7 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > if ((time64[0] < 0) || (time64[1] < 0)) > return -EINVAL; > > - if (copy_to_user(time64, argp, sizeof(time64))) > + if (copy_to_user(argp, time64, sizeof(time64))) > return -EFAULT; > > return 0; This is something that would be caught by running 'make C=1' with 'sparse' on your patch. Can you try that to see if you introduce any other warnings? I'm guessing it's fine, but it would be nice to confirm. I also send a lot of patches without running sparse and checkpatch first, but it's generally a good idea. Arnd -- 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/
Hi, Arnd On 12/30/2015 09:51 PM, Arnd Bergmann wrote: > On Wednesday 30 December 2015 21:24:21 Bamvor Jian Zhang wrote: >> diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c >> index 31bc7b7..9e98d01 100644 >> --- a/drivers/char/ppdev.c >> +++ b/drivers/char/ppdev.c >> @@ -636,7 +636,7 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) >> if ((time32[0] < 0) || (time32[1] < 0)) >> return -EINVAL; >> >> - if (copy_to_user(time32, argp, sizeof(time32))) >> + if (copy_to_user(argp, time32, sizeof(time32))) >> return -EFAULT; >> >> return 0; >> @@ -648,7 +648,7 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) >> if ((time64[0] < 0) || (time64[1] < 0)) >> return -EINVAL; >> >> - if (copy_to_user(time64, argp, sizeof(time64))) >> + if (copy_to_user(argp, time64, sizeof(time64))) >> return -EFAULT; >> >> return 0; > > This is something that would be caught by running 'make C=1' with 'sparse' > on your patch. Can you try that to see if you introduce any other warnings? OK. I do not do it before, there is no extra warning after apply the above patch. > I'm guessing it's fine, but it would be nice to confirm. I also send a lot > of patches without running sparse and checkpatch first, but it's generally > a good idea. Got you. I only do the checkpatch in past. I will do sparse and checkpatch in future. Regards Bamvor > > Arnd > _______________________________________________ > Y2038 mailing list > Y2038@lists.linaro.org > https://lists.linaro.org/mailman/listinfo/y2038 > -- 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/
On Wed, Dec 30, 2015 at 10:20:58PM +0800, Bamvor Jian Zhang wrote: > Hi, Arnd > > On 12/30/2015 09:51 PM, Arnd Bergmann wrote: > > On Wednesday 30 December 2015 21:24:21 Bamvor Jian Zhang wrote: > >> diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c > >> index 31bc7b7..9e98d01 100644 > >> --- a/drivers/char/ppdev.c > >> +++ b/drivers/char/ppdev.c > >> @@ -636,7 +636,7 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > >> if ((time32[0] < 0) || (time32[1] < 0)) > >> return -EINVAL; > >> > >> - if (copy_to_user(time32, argp, sizeof(time32))) > >> + if (copy_to_user(argp, time32, sizeof(time32))) > >> return -EFAULT; > >> > >> return 0; > >> @@ -648,7 +648,7 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) > >> if ((time64[0] < 0) || (time64[1] < 0)) > >> return -EINVAL; > >> > >> - if (copy_to_user(time64, argp, sizeof(time64))) > >> + if (copy_to_user(argp, time64, sizeof(time64))) > >> return -EFAULT; > >> > >> return 0; > > > > This is something that would be caught by running 'make C=1' with 'sparse' > > on your patch. Can you try that to see if you introduce any other warnings? > OK. I do not do it before, there is no extra warning after apply the above > patch. > > I'm guessing it's fine, but it would be nice to confirm. I also send a lot > > of patches without running sparse and checkpatch first, but it's generally > > a good idea. > Got you. I only do the checkpatch in past. I will do sparse and checkpatch > in future. Usually sparse will be part of the tests that are done by 0day. Anyway, it worked perfectly in 64bit systems also. Can you please send your patch v3 with this change.. regards sudip -- 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/
On Thursday 31 December 2015 15:13:08 Sudip Mukherjee wrote: > On Wed, Dec 30, 2015 at 10:20:58PM +0800, Bamvor Jian Zhang wrote: > > On 12/30/2015 09:51 PM, Arnd Bergmann wrote: > > > On Wednesday 30 December 2015 21:24:21 Bamvor Jian Zhang wrote: > > >> diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c > > > This is something that would be caught by running 'make C=1' with 'sparse' > > > on your patch. Can you try that to see if you introduce any other warnings? > > OK. I do not do it before, there is no extra warning after apply the above > > patch. > > > I'm guessing it's fine, but it would be nice to confirm. I also send a lot > > > of patches without running sparse and checkpatch first, but it's generally > > > a good idea. > > Got you. I only do the checkpatch in past. I will do sparse and checkpatch > > in future. > > Usually sparse will be part of the tests that are done by 0day. > Anyway, it worked perfectly in 64bit systems also. Can you please send > your patch v3 with this change.. > Ah, cool, thanks so much for testing. Did you happen to check with both 32-bit and 64-bit user space on a 64-bit kernel? This is one of the things that was not working originally but should work now. Arnd -- 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/
On Thu, Dec 31, 2015 at 03:12:11PM +0100, Arnd Bergmann wrote: > On Thursday 31 December 2015 15:13:08 Sudip Mukherjee wrote: > > On Wed, Dec 30, 2015 at 10:20:58PM +0800, Bamvor Jian Zhang wrote: > > > On 12/30/2015 09:51 PM, Arnd Bergmann wrote: > > > > On Wednesday 30 December 2015 21:24:21 Bamvor Jian Zhang wrote: > > > >> diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c > > > > This is something that would be caught by running 'make C=1' with 'sparse' > > > > on your patch. Can you try that to see if you introduce any other warnings? > > > OK. I do not do it before, there is no extra warning after apply the above > > > patch. > > > > I'm guessing it's fine, but it would be nice to confirm. I also send a lot > > > > of patches without running sparse and checkpatch first, but it's generally > > > > a good idea. > > > Got you. I only do the checkpatch in past. I will do sparse and checkpatch > > > in future. > > > > Usually sparse will be part of the tests that are done by 0day. > > Anyway, it worked perfectly in 64bit systems also. Can you please send > > your patch v3 with this change.. > > > > Ah, cool, thanks so much for testing. My pleasure. Being parport maintainer I get patches very rarely. So I should not leave a chance to test when i get one. :) > > Did you happen to check with both 32-bit and 64-bit user space on a > 64-bit kernel? This is one of the things that was not working originally > but should work now. I dont think I can manage 32 bit userspace on 64-bit kernel here. But I can definitely check it on a kvm guest. regards sudip -- 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/
On Friday 01 January 2016 10:34:25 Sudip Mukherjee wrote: > > Did you happen to check with both 32-bit and 64-bit user space on a > > 64-bit kernel? This is one of the things that was not working originally > > but should work now. > > I dont think I can manage 32 bit userspace on 64-bit kernel here. But I > can definitely check it on a kvm guest. Just to be sure we are talking about the same thing: you mean running a 64-bit kernel in a kvm guest with a 32-bit file system, right? Running a 32-bit kvm guest on a 64-bit host would not be interesting of course. Arnd -- 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/
On Fri, Jan 01, 2016 at 11:09:45PM +0100, Arnd Bergmann wrote: > On Friday 01 January 2016 10:34:25 Sudip Mukherjee wrote: > > > Did you happen to check with both 32-bit and 64-bit user space on a > > > 64-bit kernel? This is one of the things that was not working originally > > > but should work now. > > > > I dont think I can manage 32 bit userspace on 64-bit kernel here. But I > > can definitely check it on a kvm guest. > > Just to be sure we are talking about the same thing: you mean running a 64-bit > kernel in a kvm guest with a 32-bit file system, right? Running a 32-bit > kvm guest on a 64-bit host would not be interesting of course. The kvm (actually qemu, started from virt-manager with -enable-kvm) that I just configured shows the following: lscpu shows: Architecture: i686 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 1 On-line CPU(s) list: 0 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 6 Stepping: 3 CPU MHz: 2993.200 BogoMIPS: 5986.40 Virtualization: VT-x Hypervisor vendor: KVM Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 4096K uname -i shows: i686 Will it be ok to test in this one? regards sudip -- 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/
On Saturday 02 January 2016 11:59:29 Sudip Mukherjee wrote: > > > > Just to be sure we are talking about the same thing: you mean running a 64-bit > > kernel in a kvm guest with a 32-bit file system, right? Running a 32-bit > > kvm guest on a 64-bit host would not be interesting of course. > > The kvm (actually qemu, started from virt-manager with -enable-kvm) that > I just configured shows the following: > > lscpu shows: > > Architecture: i686 > CPU op-mode(s): 32-bit, 64-bit > Byte Order: Little Endian > CPU(s): 1 > On-line CPU(s) list: 0 > Thread(s) per core: 1 > Core(s) per socket: 1 > Socket(s): 1 > Vendor ID: GenuineIntel > CPU family: 6 > Model: 6 > Stepping: 3 > CPU MHz: 2993.200 > BogoMIPS: 5986.40 > Virtualization: VT-x > Hypervisor vendor: KVM > Virtualization type: full > L1d cache: 32K > L1i cache: 32K > L2 cache: 4096K > > uname -i shows: > i686 > > > Will it be ok to test in this one? If 'uname -i' reports i686, that usually means you have configured the kernel for 32-bit. Try rebuilding the kernel with 'CONFIG_64BIT' and 'CONFIG_IA32_EMULATION' enabled to test that the 32-bit user space now also works under a 64-bit kernel. That reminds me, we should now remove the code from fs/compat_ioctl.c that was handling emulating the other ioctl commands, the new .compat_ioctl callback in ppdev takes care of that along with the PPGETTIME/PPSETTIME calls, see below Arnd -- 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/diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c index dcf26537c935..e65e7d932566 100644 --- a/fs/compat_ioctl.c +++ b/fs/compat_ioctl.c @@ -1019,28 +1019,6 @@ COMPATIBLE_IOCTL(PPPIOCGL2TPSTATS) /* PPPOX */ COMPATIBLE_IOCTL(PPPOEIOCSFWD) COMPATIBLE_IOCTL(PPPOEIOCDFWD) -/* ppdev */ -COMPATIBLE_IOCTL(PPSETMODE) -COMPATIBLE_IOCTL(PPRSTATUS) -COMPATIBLE_IOCTL(PPRCONTROL) -COMPATIBLE_IOCTL(PPWCONTROL) -COMPATIBLE_IOCTL(PPFCONTROL) -COMPATIBLE_IOCTL(PPRDATA) -COMPATIBLE_IOCTL(PPWDATA) -COMPATIBLE_IOCTL(PPCLAIM) -COMPATIBLE_IOCTL(PPRELEASE) -COMPATIBLE_IOCTL(PPYIELD) -COMPATIBLE_IOCTL(PPEXCL) -COMPATIBLE_IOCTL(PPDATADIR) -COMPATIBLE_IOCTL(PPNEGOT) -COMPATIBLE_IOCTL(PPWCTLONIRQ) -COMPATIBLE_IOCTL(PPCLRIRQ) -COMPATIBLE_IOCTL(PPSETPHASE) -COMPATIBLE_IOCTL(PPGETMODES) -COMPATIBLE_IOCTL(PPGETMODE) -COMPATIBLE_IOCTL(PPGETPHASE) -COMPATIBLE_IOCTL(PPGETFLAGS) -COMPATIBLE_IOCTL(PPSETFLAGS) /* Big A */ /* sparc only */ /* Big Q for sound/OSS */
On Sat, Jan 02, 2016 at 11:40:51PM +0100, Arnd Bergmann wrote: > On Saturday 02 January 2016 11:59:29 Sudip Mukherjee wrote: > > > > > > Just to be sure we are talking about the same thing: you mean running a 64-bit > > > kernel in a kvm guest with a 32-bit file system, right? Running a 32-bit > > > kvm guest on a 64-bit host would not be interesting of course. > > > > The kvm (actually qemu, started from virt-manager with -enable-kvm) that > > I just configured shows the following: > > > > lscpu shows: > > > > Architecture: i686 > > CPU op-mode(s): 32-bit, 64-bit > > Byte Order: Little Endian > > CPU(s): 1 > > On-line CPU(s) list: 0 > > Thread(s) per core: 1 > > Core(s) per socket: 1 > > Socket(s): 1 > > Vendor ID: GenuineIntel > > CPU family: 6 > > Model: 6 > > Stepping: 3 > > CPU MHz: 2993.200 > > BogoMIPS: 5986.40 > > Virtualization: VT-x > > Hypervisor vendor: KVM > > Virtualization type: full > > L1d cache: 32K > > L1i cache: 32K > > L2 cache: 4096K > > > > uname -i shows: > > i686 > > > > > > Will it be ok to test in this one? > > > If 'uname -i' reports i686, that usually means you have configured the > kernel for 32-bit. Try rebuilding the kernel with 'CONFIG_64BIT' and > 'CONFIG_IA32_EMULATION' enabled to test that the 32-bit user space now > also works under a 64-bit kernel. done... tested with CONFIG_64BIT and CONFIG_IA32_EMULATION. The original ppdev code failed with my userspace test code. After applying patch 1/2 of v3 it still failed, but after applying 2/2 of v3 it worked. will you take v3 through your y2038 tree? or I can keep them for, ummmmm, 4.6 merge window. > > That reminds me, we should now remove the code from fs/compat_ioctl.c > that was handling emulating the other ioctl commands, the new .compat_ioctl > callback in ppdev takes care of that along with the PPGETTIME/PPSETTIME > calls, see below Bamvor, care to send a patch for these also... regards sudip -- 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/
On Monday 04 January 2016 18:44:52 Sudip Mukherjee wrote: > > > > If 'uname -i' reports i686, that usually means you have configured the > > kernel for 32-bit. Try rebuilding the kernel with 'CONFIG_64BIT' and > > 'CONFIG_IA32_EMULATION' enabled to test that the 32-bit user space now > > also works under a 64-bit kernel. > > done... tested with CONFIG_64BIT and CONFIG_IA32_EMULATION. The original > ppdev code failed with my userspace test code. After applying patch 1/2 > of v3 it still failed, but after applying 2/2 of v3 it worked. Ok, great! > will you take v3 through your y2038 tree? or I can keep them for, > ummmmm, 4.6 merge window. My preference would be for you to pick it up. I try to only use the y2038 tree for patches to drivers that have no maintainer. Arnd -- 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/
Hi, Sudip On 01/04/2016 09:14 PM, Sudip Mukherjee wrote: > On Sat, Jan 02, 2016 at 11:40:51PM +0100, Arnd Bergmann wrote: >> On Saturday 02 January 2016 11:59:29 Sudip Mukherjee wrote: >>>> >>>> Just to be sure we are talking about the same thing: you mean running a 64-bit >>>> kernel in a kvm guest with a 32-bit file system, right? Running a 32-bit >>>> kvm guest on a 64-bit host would not be interesting of course. >>> >>> The kvm (actually qemu, started from virt-manager with -enable-kvm) that >>> I just configured shows the following: >>> >>> lscpu shows: >>> >>> Architecture: i686 >>> CPU op-mode(s): 32-bit, 64-bit >>> Byte Order: Little Endian >>> CPU(s): 1 >>> On-line CPU(s) list: 0 >>> Thread(s) per core: 1 >>> Core(s) per socket: 1 >>> Socket(s): 1 >>> Vendor ID: GenuineIntel >>> CPU family: 6 >>> Model: 6 >>> Stepping: 3 >>> CPU MHz: 2993.200 >>> BogoMIPS: 5986.40 >>> Virtualization: VT-x >>> Hypervisor vendor: KVM >>> Virtualization type: full >>> L1d cache: 32K >>> L1i cache: 32K >>> L2 cache: 4096K >>> >>> uname -i shows: >>> i686 >>> >>> >>> Will it be ok to test in this one? >> >> >> If 'uname -i' reports i686, that usually means you have configured the >> kernel for 32-bit. Try rebuilding the kernel with 'CONFIG_64BIT' and >> 'CONFIG_IA32_EMULATION' enabled to test that the 32-bit user space now >> also works under a 64-bit kernel. > > done... tested with CONFIG_64BIT and CONFIG_IA32_EMULATION. The original > ppdev code failed with my userspace test code. After applying patch 1/2 > of v3 it still failed, but after applying 2/2 of v3 it worked. > will you take v3 through your y2038 tree? or I can keep them for, > ummmmm, 4.6 merge window. > >> >> That reminds me, we should now remove the code from fs/compat_ioctl.c >> that was handling emulating the other ioctl commands, the new .compat_ioctl >> callback in ppdev takes care of that along with the PPGETTIME/PPSETTIME >> calls, see below > > Bamvor, care to send a patch for these also... Sure. Should I send this patch with previous two patches in v4 or send this single patch to Alexander Viro and linux-fsdevel@vger.kernel.org? Regards Bamvor > > regards > sudip > -- 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/
On Wednesday 06 January 2016 20:56:28 Bamvor Jian Zhang wrote: > >> > >> That reminds me, we should now remove the code from fs/compat_ioctl.c > >> that was handling emulating the other ioctl commands, the new .compat_ioctl > >> callback in ppdev takes care of that along with the PPGETTIME/PPSETTIME > >> calls, see below > > > > Bamvor, care to send a patch for these also... > Sure. Should I send this patch with previous two patches in v4 or send this > single patch to Alexander Viro and linux-fsdevel@vger.kernel.org? > > I'd say it should go along with the rest of the patches. The fs/compat_ioctl.c file is really shared across multiple drivers and Al doesn't care about the driver specific changes in it. Arnd -- 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/
diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c index 31bc7b7..9e98d01 100644 --- a/drivers/char/ppdev.c +++ b/drivers/char/ppdev.c @@ -636,7 +636,7 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) if ((time32[0] < 0) || (time32[1] < 0)) return -EINVAL; - if (copy_to_user(time32, argp, sizeof(time32))) + if (copy_to_user(argp, time32, sizeof(time32))) return -EFAULT; return 0; @@ -648,7 +648,7 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) if ((time64[0] < 0) || (time64[1] < 0)) return -EINVAL; - if (copy_to_user(time64, argp, sizeof(time64))) + if (copy_to_user(argp, time64, sizeof(time64))) return -EFAULT; return 0;