All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Convert ppdev to y2038 safe
@ 2015-12-17  9:58 Bamvor Jian Zhang
  2015-12-17  9:58 ` [PATCH v2 1/2] ppdev: convert " Bamvor Jian Zhang
  2015-12-17  9:58 ` [PATCH v2 2/2] ppdev: add support for compat ioctl Bamvor Jian Zhang
  0 siblings, 2 replies; 19+ messages in thread
From: Bamvor Jian Zhang @ 2015-12-17  9:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: y2038, gregkh, arnd, sudipm.mukherjee, broonie, Bamvor Jian Zhang

These series of patches try to convert parport device(ppdev) to
y2038 safe, and support y2038 safe and unsafe application at the
same time. The first version is here[1].

An y2038 safe application/kernel use 64bit time_t(aka time64_t)
to avoid 32-bit time types broken in the year 2038. Given that
some time relative struct(e.g. timeval in ppdev.c) is mainly the
offset of the real time, the old 32bit time_t in such application
is safe. We need to handle the 32bit time_t and 64bit time_t
application at the same time. My approach here is handle them as
different ioctl command for different size of timeval.

Build successful on arm64, arm and x86_64.

Changes since v1:
1.  Fix the warning when build against x86_64.

[1] https://lkml.org/lkml/2015/12/9/32

Bamvor Jian Zhang (2):
  ppdev: convert to y2038 safe
  ppdev: add support for compat ioctl

 drivers/char/ppdev.c | 87 ++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 67 insertions(+), 20 deletions(-)

-- 
2.1.4


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH v2 1/2] ppdev: convert to y2038 safe
  2015-12-17  9:58 [PATCH v2 0/2] Convert ppdev to y2038 safe Bamvor Jian Zhang
@ 2015-12-17  9:58 ` Bamvor Jian Zhang
  2015-12-17  9:58 ` [PATCH v2 2/2] ppdev: add support for compat ioctl Bamvor Jian Zhang
  1 sibling, 0 replies; 19+ messages in thread
From: Bamvor Jian Zhang @ 2015-12-17  9:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: y2038, gregkh, arnd, sudipm.mukherjee, broonie, Bamvor Jian Zhang

The y2038 issue for ppdev is changes of timeval in the ioctl
(PPSETTIME and PPGETTIME). The size of struct timeval changes from
8bytes to 16bytes due to the changes of time_t. It lead to the
changes of the command of ioctl, e.g. for PPGETTIME, We have:

on 32-bit (old): 0x80087095
on 32-bit (new): 0x80107095
on 64-bit      : 0x80107095

This patch define these two ioctl commands to support the 32bit
and 64bit time_t application at the same time. And, introduce
pp_set_timeout to remove some duplicated code.

Signed-off-by: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org>
Reviewed-by: Arnd Bergmann <arnd at arndb.de>
---
 drivers/char/ppdev.c | 75 ++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 55 insertions(+), 20 deletions(-)

diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c
index ae0b42b..19a4d6e 100644
--- a/drivers/char/ppdev.c
+++ b/drivers/char/ppdev.c
@@ -98,6 +98,13 @@ struct pp_struct {
 #define ROUND_UP(x,y) (((x)+(y)-1)/(y))
 
 static DEFINE_MUTEX(pp_do_mutex);
+
+/* define fixed sized ioctl cmd for y2038 migration */
+#define PPGETTIME32	_IOR(PP_IOCTL, 0x95, s32[2])
+#define PPSETTIME32	_IOW(PP_IOCTL, 0x96, s32[2])
+#define PPGETTIME64	_IOR(PP_IOCTL, 0x95, s64[2])
+#define PPSETTIME64	_IOW(PP_IOCTL, 0x96, s64[2])
+
 static inline void pp_enable_irq (struct pp_struct *pp)
 {
 	struct parport *port = pp->pdev->port;
@@ -322,6 +329,22 @@ static enum ieee1284_phase init_phase (int mode)
 	return IEEE1284_PH_FWD_IDLE;
 }
 
+static int pp_set_timeout(struct pardevice *pdev, long tv_sec, int tv_usec)
+{
+	long to_jiffies;
+
+	if ((tv_sec < 0) || (tv_usec < 0))
+		return -EINVAL;
+
+	to_jiffies = usecs_to_jiffies(tv_usec);
+	to_jiffies += tv_sec * HZ;
+	if (to_jiffies <= 0)
+		return -EINVAL;
+
+	pdev->timeout = to_jiffies;
+	return 0;
+}
+
 static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 {
 	unsigned int minor = iminor(file_inode(file));
@@ -495,9 +518,10 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 		unsigned char reg;
 		unsigned char mask;
 		int mode;
+		s32 time32[2];
+		s64 time64[2];
+		struct timespec64 ts;
 		int ret;
-		struct timeval par_timeout;
-		long to_jiffies;
 
 	case PPRSTATUS:
 		reg = parport_read_status (port);
@@ -592,29 +616,40 @@ static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 		atomic_sub (ret, &pp->irqc);
 		return 0;
 
-	case PPSETTIME:
-		if (copy_from_user (&par_timeout, argp, sizeof(struct timeval))) {
+	case PPSETTIME32:
+		if (copy_from_user(time32, argp, sizeof(time32)))
 			return -EFAULT;
-		}
-		/* Convert to jiffies, place in pp->pdev->timeout */
-		if ((par_timeout.tv_sec < 0) || (par_timeout.tv_usec < 0)) {
-			return -EINVAL;
-		}
-		to_jiffies = ROUND_UP(par_timeout.tv_usec, 1000000/HZ);
-		to_jiffies += par_timeout.tv_sec * (long)HZ;
-		if (to_jiffies <= 0) {
+
+		return pp_set_timeout(pp->pdev, time32[0], time32[1]);
+
+	case PPSETTIME64:
+		if (copy_from_user(time64, argp, sizeof(time64)))
+			return -EFAULT;
+
+		return pp_set_timeout(pp->pdev, time64[0], time64[1]);
+
+	case PPGETTIME32:
+		jiffies_to_timespec64(pp->pdev->timeout, &ts);
+		time32[0] = ts.tv_sec;
+		time32[1] = ts.tv_nsec / NSEC_PER_USEC;
+		if ((time32[0] < 0) || (time32[1] < 0))
 			return -EINVAL;
-		}
-		pp->pdev->timeout = to_jiffies;
+
+		if (copy_to_user(time32, argp, sizeof(time32)))
+			return -EFAULT;
+
 		return 0;
 
-	case PPGETTIME:
-		to_jiffies = pp->pdev->timeout;
-		memset(&par_timeout, 0, sizeof(par_timeout));
-		par_timeout.tv_sec = to_jiffies / HZ;
-		par_timeout.tv_usec = (to_jiffies % (long)HZ) * (1000000/HZ);
-		if (copy_to_user (argp, &par_timeout, sizeof(struct timeval)))
+	case PPGETTIME64:
+		jiffies_to_timespec64(pp->pdev->timeout, &ts);
+		time64[0] = ts.tv_sec;
+		time64[1] = ts.tv_nsec / NSEC_PER_USEC;
+		if ((time64[0] < 0) || (time64[1] < 0))
+			return -EINVAL;
+
+		if (copy_to_user(time64, argp, sizeof(time64)))
 			return -EFAULT;
+
 		return 0;
 
 	default:
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v2 2/2] ppdev: add support for compat ioctl
  2015-12-17  9:58 [PATCH v2 0/2] Convert ppdev to y2038 safe Bamvor Jian Zhang
  2015-12-17  9:58 ` [PATCH v2 1/2] ppdev: convert " Bamvor Jian Zhang
@ 2015-12-17  9:58 ` Bamvor Jian Zhang
  2015-12-17 23:12   ` Arnd Bergmann
  1 sibling, 1 reply; 19+ messages in thread
From: Bamvor Jian Zhang @ 2015-12-17  9:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: y2038, gregkh, arnd, sudipm.mukherjee, broonie, Bamvor Jian Zhang

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>
---
 drivers/char/ppdev.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c
index 19a4d6e..31bc7b7 100644
--- a/drivers/char/ppdev.c
+++ b/drivers/char/ppdev.c
@@ -69,6 +69,7 @@
 #include <linux/ppdev.h>
 #include <linux/mutex.h>
 #include <linux/uaccess.h>
+#include <linux/compat.h>
 
 #define PP_VERSION "ppdev: user-space parallel port driver"
 #define CHRDEV "ppdev"
@@ -670,6 +671,14 @@ static long pp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 	return ret;
 }
 
+#ifdef CONFIG_COMPAT
+static long pp_compat_ioctl(struct file *file, unsigned int cmd,
+		unsigned long arg)
+{
+	return pp_ioctl(file, cmd, (unsigned long)compat_ptr(arg));
+}
+#endif
+
 static int pp_open (struct inode * inode, struct file * file)
 {
 	unsigned int minor = iminor(inode);
@@ -779,6 +788,9 @@ static const struct file_operations pp_fops = {
 	.write		= pp_write,
 	.poll		= pp_poll,
 	.unlocked_ioctl	= pp_ioctl,
+#ifdef CONFIG_COMPAT
+	.compat_ioctl   = pp_compat_ioctl,
+#endif
 	.open		= pp_open,
 	.release	= pp_release,
 };
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 2/2] ppdev: add support for compat ioctl
  2015-12-17  9:58 ` [PATCH v2 2/2] ppdev: add support for compat ioctl Bamvor Jian Zhang
@ 2015-12-17 23:12   ` Arnd Bergmann
  2015-12-30 11:16     ` Sudip Mukherjee
  0 siblings, 1 reply; 19+ messages in thread
From: Arnd Bergmann @ 2015-12-17 23:12 UTC (permalink / raw)
  To: Bamvor Jian Zhang; +Cc: linux-kernel, y2038, gregkh, sudipm.mukherjee, broonie

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)

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 2/2] ppdev: add support for compat ioctl
  2015-12-17 23:12   ` Arnd Bergmann
@ 2015-12-30 11:16     ` Sudip Mukherjee
  2015-12-30 13:24       ` Bamvor Jian Zhang
  0 siblings, 1 reply; 19+ messages in thread
From: Sudip Mukherjee @ 2015-12-30 11:16 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Bamvor Jian Zhang, linux-kernel, y2038, gregkh, broonie

[-- Attachment #1: Type: text/plain, Size: 1065 bytes --]

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)

regards
sudip

[-- Attachment #2: ppdev_user.c --]
[-- Type: text/x-csrc, Size: 890 bytes --]

#include <stdio.h>
#include<stdlib.h>
#include <unistd.h>
#include <linux/ioctl.h>
#include <linux/parport.h>
#include <linux/ppdev.h>
#include <fcntl.h>
#include <sys/time.h>

int main(int argc, char *argv[])
{
  int fd
  struct timeval tv;	

  fd = open("/dev/parport0",O_RDWR);
  if (fd == -1)
  {
    perror("open");
    exit(1);
  }
  if (ioctl(fd,PPCLAIM))
  {
    perror("PPCLAIM");
    close(fd);
    exit(1);
  }
  if (ioctl(fd, PPGETTIME, &tv))
  {
    perror ("PPNEGOT");
    close (fd);
    return 1;
  }
  printf("sec %u usec %u\n",tv.tv_sec, tv.tv_usec);
  tv.tv_sec = 50;
  tv.tv_usec = 1000;
  if (ioctl(fd, PPSETTIME, &tv))
  {
    perror ("PPNEGOT");
    close (fd);
    return 1;
  }
  if (ioctl(fd, PPGETTIME, &tv))
  {
    perror ("PPNEGOT");
    close (fd);
    return 1;
  }
  printf("sec %u usec %u\n",tv.tv_sec, tv.tv_usec);
  ioctl (fd, PPRELEASE);
  close(fd);
}

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 2/2] ppdev: add support for compat ioctl
  2015-12-30 11:16     ` Sudip Mukherjee
@ 2015-12-30 13:24       ` Bamvor Jian Zhang
  2015-12-30 13:48         ` Sudip Mukherjee
  2015-12-30 13:51         ` [Y2038] " Arnd Bergmann
  0 siblings, 2 replies; 19+ messages in thread
From: Bamvor Jian Zhang @ 2015-12-30 13:24 UTC (permalink / raw)
  To: Sudip Mukherjee, Arnd Bergmann
  Cc: linux-kernel, y2038, gregkh, broonie, Bamvor Zhang Jian

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;

Regards

Bamvor

> 
> regards
> sudip
> 

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH v2 2/2] ppdev: add support for compat ioctl
  2015-12-30 13:24       ` Bamvor Jian Zhang
@ 2015-12-30 13:48         ` Sudip Mukherjee
  2015-12-30 13:51         ` [Y2038] " Arnd Bergmann
  1 sibling, 0 replies; 19+ messages in thread
From: Sudip Mukherjee @ 2015-12-30 13:48 UTC (permalink / raw)
  To: Bamvor Jian Zhang; +Cc: Arnd Bergmann, linux-kernel, y2038, gregkh, broonie

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Y2038] [PATCH v2 2/2] ppdev: add support for compat ioctl
  2015-12-30 13:24       ` Bamvor Jian Zhang
  2015-12-30 13:48         ` Sudip Mukherjee
@ 2015-12-30 13:51         ` Arnd Bergmann
  2015-12-30 14:20           ` Bamvor Jian Zhang
  1 sibling, 1 reply; 19+ messages in thread
From: Arnd Bergmann @ 2015-12-30 13:51 UTC (permalink / raw)
  To: y2038; +Cc: Bamvor Jian Zhang, Sudip Mukherjee, gregkh, broonie, linux-kernel

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Y2038] [PATCH v2 2/2] ppdev: add support for compat ioctl
  2015-12-30 13:51         ` [Y2038] " Arnd Bergmann
@ 2015-12-30 14:20           ` Bamvor Jian Zhang
  2015-12-31  9:43             ` Sudip Mukherjee
  0 siblings, 1 reply; 19+ messages in thread
From: Bamvor Jian Zhang @ 2015-12-30 14:20 UTC (permalink / raw)
  To: Arnd Bergmann, y2038
  Cc: gregkh, broonie, linux-kernel, Sudip Mukherjee, Bamvor Zhang Jian

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
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Y2038] [PATCH v2 2/2] ppdev: add support for compat ioctl
  2015-12-30 14:20           ` Bamvor Jian Zhang
@ 2015-12-31  9:43             ` Sudip Mukherjee
  2015-12-31 14:12               ` Arnd Bergmann
  0 siblings, 1 reply; 19+ messages in thread
From: Sudip Mukherjee @ 2015-12-31  9:43 UTC (permalink / raw)
  To: Bamvor Jian Zhang; +Cc: Arnd Bergmann, y2038, gregkh, broonie, linux-kernel

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Y2038] [PATCH v2 2/2] ppdev: add support for compat ioctl
  2015-12-31  9:43             ` Sudip Mukherjee
@ 2015-12-31 14:12               ` Arnd Bergmann
  2016-01-01  5:04                 ` Sudip Mukherjee
  0 siblings, 1 reply; 19+ messages in thread
From: Arnd Bergmann @ 2015-12-31 14:12 UTC (permalink / raw)
  To: Sudip Mukherjee; +Cc: Bamvor Jian Zhang, y2038, gregkh, broonie, linux-kernel

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Y2038] [PATCH v2 2/2] ppdev: add support for compat ioctl
  2015-12-31 14:12               ` Arnd Bergmann
@ 2016-01-01  5:04                 ` Sudip Mukherjee
  2016-01-01 22:09                   ` Arnd Bergmann
  0 siblings, 1 reply; 19+ messages in thread
From: Sudip Mukherjee @ 2016-01-01  5:04 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Bamvor Jian Zhang, y2038, gregkh, broonie, linux-kernel

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Y2038] [PATCH v2 2/2] ppdev: add support for compat ioctl
  2016-01-01  5:04                 ` Sudip Mukherjee
@ 2016-01-01 22:09                   ` Arnd Bergmann
  2016-01-02  6:29                     ` Sudip Mukherjee
  0 siblings, 1 reply; 19+ messages in thread
From: Arnd Bergmann @ 2016-01-01 22:09 UTC (permalink / raw)
  To: Sudip Mukherjee; +Cc: Bamvor Jian Zhang, y2038, gregkh, broonie, linux-kernel

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Y2038] [PATCH v2 2/2] ppdev: add support for compat ioctl
  2016-01-01 22:09                   ` Arnd Bergmann
@ 2016-01-02  6:29                     ` Sudip Mukherjee
  2016-01-02 22:40                       ` Arnd Bergmann
  0 siblings, 1 reply; 19+ messages in thread
From: Sudip Mukherjee @ 2016-01-02  6:29 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Bamvor Jian Zhang, y2038, gregkh, broonie, linux-kernel

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Y2038] [PATCH v2 2/2] ppdev: add support for compat ioctl
  2016-01-02  6:29                     ` Sudip Mukherjee
@ 2016-01-02 22:40                       ` Arnd Bergmann
  2016-01-04 13:14                         ` Sudip Mukherjee
  0 siblings, 1 reply; 19+ messages in thread
From: Arnd Bergmann @ 2016-01-02 22:40 UTC (permalink / raw)
  To: y2038; +Cc: Sudip Mukherjee, gregkh, broonie, Bamvor Jian Zhang, linux-kernel

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


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 */


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [Y2038] [PATCH v2 2/2] ppdev: add support for compat ioctl
  2016-01-02 22:40                       ` Arnd Bergmann
@ 2016-01-04 13:14                         ` Sudip Mukherjee
  2016-01-04 13:26                           ` Arnd Bergmann
  2016-01-06 12:56                           ` Bamvor Jian Zhang
  0 siblings, 2 replies; 19+ messages in thread
From: Sudip Mukherjee @ 2016-01-04 13:14 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: y2038, gregkh, broonie, Bamvor Jian Zhang, linux-kernel

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Y2038] [PATCH v2 2/2] ppdev: add support for compat ioctl
  2016-01-04 13:14                         ` Sudip Mukherjee
@ 2016-01-04 13:26                           ` Arnd Bergmann
  2016-01-06 12:56                           ` Bamvor Jian Zhang
  1 sibling, 0 replies; 19+ messages in thread
From: Arnd Bergmann @ 2016-01-04 13:26 UTC (permalink / raw)
  To: Sudip Mukherjee; +Cc: y2038, gregkh, broonie, Bamvor Jian Zhang, linux-kernel

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Y2038] [PATCH v2 2/2] ppdev: add support for compat ioctl
  2016-01-04 13:14                         ` Sudip Mukherjee
  2016-01-04 13:26                           ` Arnd Bergmann
@ 2016-01-06 12:56                           ` Bamvor Jian Zhang
  2016-01-07 15:12                             ` Arnd Bergmann
  1 sibling, 1 reply; 19+ messages in thread
From: Bamvor Jian Zhang @ 2016-01-06 12:56 UTC (permalink / raw)
  To: Sudip Mukherjee, Arnd Bergmann
  Cc: y2038, gregkh, broonie, linux-kernel, Bamvor Zhang Jian

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
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [Y2038] [PATCH v2 2/2] ppdev: add support for compat ioctl
  2016-01-06 12:56                           ` Bamvor Jian Zhang
@ 2016-01-07 15:12                             ` Arnd Bergmann
  0 siblings, 0 replies; 19+ messages in thread
From: Arnd Bergmann @ 2016-01-07 15:12 UTC (permalink / raw)
  To: y2038; +Cc: Bamvor Jian Zhang, Sudip Mukherjee, gregkh, broonie, linux-kernel

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

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2016-01-07 15:12 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-17  9:58 [PATCH v2 0/2] Convert ppdev to y2038 safe Bamvor Jian Zhang
2015-12-17  9:58 ` [PATCH v2 1/2] ppdev: convert " Bamvor Jian Zhang
2015-12-17  9:58 ` [PATCH v2 2/2] ppdev: add support for compat ioctl Bamvor Jian Zhang
2015-12-17 23:12   ` Arnd Bergmann
2015-12-30 11:16     ` Sudip Mukherjee
2015-12-30 13:24       ` Bamvor Jian Zhang
2015-12-30 13:48         ` Sudip Mukherjee
2015-12-30 13:51         ` [Y2038] " Arnd Bergmann
2015-12-30 14:20           ` Bamvor Jian Zhang
2015-12-31  9:43             ` Sudip Mukherjee
2015-12-31 14:12               ` Arnd Bergmann
2016-01-01  5:04                 ` Sudip Mukherjee
2016-01-01 22:09                   ` Arnd Bergmann
2016-01-02  6:29                     ` Sudip Mukherjee
2016-01-02 22:40                       ` Arnd Bergmann
2016-01-04 13:14                         ` Sudip Mukherjee
2016-01-04 13:26                           ` Arnd Bergmann
2016-01-06 12:56                           ` Bamvor Jian Zhang
2016-01-07 15:12                             ` Arnd Bergmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.