Re: [PATCH] tty restore locked ioctl file op

2007-06-09 Thread Paul Fulghum

Björn Steinbrink wrote:

Sorry for the delay, your mails didn't make it into my inbox, and I
usually just mark threads on which I'm Cc'ed as read in my lkml mailbox,
thus I didn't notice it earlier. Any traces of the lost mails on your
side?


No clues on this end.


The patch works as expected, no Oops in sight. Regarding the
reproducability, it might be that it was easier to trigger on rc1. When
I retried today with rc4, I only got 2 Oopses in a minute, while the
first test had spitten out about 20 Oopses in 10 seconds (not sure if I
really had rc1 running back then, though).


I'm sure it's very timing dependent.
I'm confident with this fix.

Thanks for your help.

--
Paul
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] tty restore locked ioctl file op

2007-06-09 Thread Björn Steinbrink
On 2007.06.08 15:34:17 -0500, Paul Fulghum wrote:
> Restore tty locked ioctl handler which was replaced with
> an unlocked ioctl handler in hung_up_tty_fops by the patch:
> 
> commit e10cc1df1d2014f68a4bdcf73f6dd122c4561f94
> Author: Paul Fulghum <[EMAIL PROTECTED]>
> Date:   Thu May 10 22:22:50 2007 -0700
> 
> tty: add compat_ioctl
> 
> This was reported in:
> [Bug 8473] New: Oops: 0010 [1] SMP
> 
> The bug is caused by switching to hung_up_tty_fops in do_tty_hangup.
> An ioctl call can be waiting on BLK after testing for existence of
> the locked ioctl handler in the normal tty fops, but before calling
> the locked ioctl handler. If a hangup occurs at that point, the
> locked ioctl fop is NULL and an oops occurs.

Sorry for the delay, your mails didn't make it into my inbox, and I
usually just mark threads on which I'm Cc'ed as read in my lkml mailbox,
thus I didn't notice it earlier. Any traces of the lost mails on your
side?

The patch works as expected, no Oops in sight. Regarding the
reproducability, it might be that it was easier to trigger on rc1. When
I retried today with rc4, I only got 2 Oopses in a minute, while the
first test had spitten out about 20 Oopses in 10 seconds (not sure if I
really had rc1 running back then, though).

Thanks,
Björn

> Signed-off-by: Paul Fulghum <[EMAIL PROTECTED]>
> 
> --- a/drivers/char/tty_io.c   2007-06-08 14:26:10.0 -0500
> +++ b/drivers/char/tty_io.c   2007-06-08 14:28:58.0 -0500
> @@ -1173,8 +1173,14 @@ static unsigned int hung_up_tty_poll(str
>   return POLLIN | POLLOUT | POLLERR | POLLHUP | POLLRDNORM | POLLWRNORM;
>  }
>  
> -static long hung_up_tty_ioctl(struct file * file,
> -   unsigned int cmd, unsigned long arg)
> +static int hung_up_tty_ioctl(struct inode * inode, struct file * file,
> +  unsigned int cmd, unsigned long arg)
> +{
> + return cmd == TIOCSPGRP ? -ENOTTY : -EIO;
> +}
> +
> +static long hung_up_tty_compat_ioctl(struct file * file,
> +  unsigned int cmd, unsigned long arg)
>  {
>   return cmd == TIOCSPGRP ? -ENOTTY : -EIO;
>  }
> @@ -1222,8 +1228,8 @@ static const struct file_operations hung
>   .read   = hung_up_tty_read,
>   .write  = hung_up_tty_write,
>   .poll   = hung_up_tty_poll,
> - .unlocked_ioctl = hung_up_tty_ioctl,
> - .compat_ioctl   = hung_up_tty_ioctl,
> + .ioctl  = hung_up_tty_ioctl,
> + .compat_ioctl   = hung_up_tty_compat_ioctl,
>   .release= tty_release,
>  };
>  
> 
> 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [EMAIL PROTECTED]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] tty restore locked ioctl file op

2007-06-09 Thread Björn Steinbrink
On 2007.06.08 15:34:17 -0500, Paul Fulghum wrote:
 Restore tty locked ioctl handler which was replaced with
 an unlocked ioctl handler in hung_up_tty_fops by the patch:
 
 commit e10cc1df1d2014f68a4bdcf73f6dd122c4561f94
 Author: Paul Fulghum [EMAIL PROTECTED]
 Date:   Thu May 10 22:22:50 2007 -0700
 
 tty: add compat_ioctl
 
 This was reported in:
 [Bug 8473] New: Oops: 0010 [1] SMP
 
 The bug is caused by switching to hung_up_tty_fops in do_tty_hangup.
 An ioctl call can be waiting on BLK after testing for existence of
 the locked ioctl handler in the normal tty fops, but before calling
 the locked ioctl handler. If a hangup occurs at that point, the
 locked ioctl fop is NULL and an oops occurs.

Sorry for the delay, your mails didn't make it into my inbox, and I
usually just mark threads on which I'm Cc'ed as read in my lkml mailbox,
thus I didn't notice it earlier. Any traces of the lost mails on your
side?

The patch works as expected, no Oops in sight. Regarding the
reproducability, it might be that it was easier to trigger on rc1. When
I retried today with rc4, I only got 2 Oopses in a minute, while the
first test had spitten out about 20 Oopses in 10 seconds (not sure if I
really had rc1 running back then, though).

Thanks,
Björn

 Signed-off-by: Paul Fulghum [EMAIL PROTECTED]
 
 --- a/drivers/char/tty_io.c   2007-06-08 14:26:10.0 -0500
 +++ b/drivers/char/tty_io.c   2007-06-08 14:28:58.0 -0500
 @@ -1173,8 +1173,14 @@ static unsigned int hung_up_tty_poll(str
   return POLLIN | POLLOUT | POLLERR | POLLHUP | POLLRDNORM | POLLWRNORM;
  }
  
 -static long hung_up_tty_ioctl(struct file * file,
 -   unsigned int cmd, unsigned long arg)
 +static int hung_up_tty_ioctl(struct inode * inode, struct file * file,
 +  unsigned int cmd, unsigned long arg)
 +{
 + return cmd == TIOCSPGRP ? -ENOTTY : -EIO;
 +}
 +
 +static long hung_up_tty_compat_ioctl(struct file * file,
 +  unsigned int cmd, unsigned long arg)
  {
   return cmd == TIOCSPGRP ? -ENOTTY : -EIO;
  }
 @@ -1222,8 +1228,8 @@ static const struct file_operations hung
   .read   = hung_up_tty_read,
   .write  = hung_up_tty_write,
   .poll   = hung_up_tty_poll,
 - .unlocked_ioctl = hung_up_tty_ioctl,
 - .compat_ioctl   = hung_up_tty_ioctl,
 + .ioctl  = hung_up_tty_ioctl,
 + .compat_ioctl   = hung_up_tty_compat_ioctl,
   .release= tty_release,
  };
  
 
 
 
 -
 To unsubscribe from this list: send the line unsubscribe linux-kernel in
 the body of a message to [EMAIL PROTECTED]
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
 Please read the FAQ at  http://www.tux.org/lkml/
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] tty restore locked ioctl file op

2007-06-09 Thread Paul Fulghum

Björn Steinbrink wrote:

Sorry for the delay, your mails didn't make it into my inbox, and I
usually just mark threads on which I'm Cc'ed as read in my lkml mailbox,
thus I didn't notice it earlier. Any traces of the lost mails on your
side?


No clues on this end.


The patch works as expected, no Oops in sight. Regarding the
reproducability, it might be that it was easier to trigger on rc1. When
I retried today with rc4, I only got 2 Oopses in a minute, while the
first test had spitten out about 20 Oopses in 10 seconds (not sure if I
really had rc1 running back then, though).


I'm sure it's very timing dependent.
I'm confident with this fix.

Thanks for your help.

--
Paul
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] tty restore locked ioctl file op

2007-06-08 Thread Paul Fulghum
Restore tty locked ioctl handler which was replaced with
an unlocked ioctl handler in hung_up_tty_fops by the patch:

commit e10cc1df1d2014f68a4bdcf73f6dd122c4561f94
Author: Paul Fulghum <[EMAIL PROTECTED]>
Date:   Thu May 10 22:22:50 2007 -0700

tty: add compat_ioctl

This was reported in:
[Bug 8473] New: Oops: 0010 [1] SMP

The bug is caused by switching to hung_up_tty_fops in do_tty_hangup.
An ioctl call can be waiting on BLK after testing for existence of
the locked ioctl handler in the normal tty fops, but before calling
the locked ioctl handler. If a hangup occurs at that point, the
locked ioctl fop is NULL and an oops occurs.

Signed-off-by: Paul Fulghum <[EMAIL PROTECTED]>

--- a/drivers/char/tty_io.c 2007-06-08 14:26:10.0 -0500
+++ b/drivers/char/tty_io.c 2007-06-08 14:28:58.0 -0500
@@ -1173,8 +1173,14 @@ static unsigned int hung_up_tty_poll(str
return POLLIN | POLLOUT | POLLERR | POLLHUP | POLLRDNORM | POLLWRNORM;
 }
 
-static long hung_up_tty_ioctl(struct file * file,
- unsigned int cmd, unsigned long arg)
+static int hung_up_tty_ioctl(struct inode * inode, struct file * file,
+unsigned int cmd, unsigned long arg)
+{
+   return cmd == TIOCSPGRP ? -ENOTTY : -EIO;
+}
+
+static long hung_up_tty_compat_ioctl(struct file * file,
+unsigned int cmd, unsigned long arg)
 {
return cmd == TIOCSPGRP ? -ENOTTY : -EIO;
 }
@@ -1222,8 +1228,8 @@ static const struct file_operations hung
.read   = hung_up_tty_read,
.write  = hung_up_tty_write,
.poll   = hung_up_tty_poll,
-   .unlocked_ioctl = hung_up_tty_ioctl,
-   .compat_ioctl   = hung_up_tty_ioctl,
+   .ioctl  = hung_up_tty_ioctl,
+   .compat_ioctl   = hung_up_tty_compat_ioctl,
.release= tty_release,
 };
 



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] tty restore locked ioctl file op

2007-06-08 Thread Paul Fulghum
Restore tty locked ioctl handler which was replaced with
an unlocked ioctl handler in hung_up_tty_fops by the patch:

commit e10cc1df1d2014f68a4bdcf73f6dd122c4561f94
Author: Paul Fulghum [EMAIL PROTECTED]
Date:   Thu May 10 22:22:50 2007 -0700

tty: add compat_ioctl

This was reported in:
[Bug 8473] New: Oops: 0010 [1] SMP

The bug is caused by switching to hung_up_tty_fops in do_tty_hangup.
An ioctl call can be waiting on BLK after testing for existence of
the locked ioctl handler in the normal tty fops, but before calling
the locked ioctl handler. If a hangup occurs at that point, the
locked ioctl fop is NULL and an oops occurs.

Signed-off-by: Paul Fulghum [EMAIL PROTECTED]

--- a/drivers/char/tty_io.c 2007-06-08 14:26:10.0 -0500
+++ b/drivers/char/tty_io.c 2007-06-08 14:28:58.0 -0500
@@ -1173,8 +1173,14 @@ static unsigned int hung_up_tty_poll(str
return POLLIN | POLLOUT | POLLERR | POLLHUP | POLLRDNORM | POLLWRNORM;
 }
 
-static long hung_up_tty_ioctl(struct file * file,
- unsigned int cmd, unsigned long arg)
+static int hung_up_tty_ioctl(struct inode * inode, struct file * file,
+unsigned int cmd, unsigned long arg)
+{
+   return cmd == TIOCSPGRP ? -ENOTTY : -EIO;
+}
+
+static long hung_up_tty_compat_ioctl(struct file * file,
+unsigned int cmd, unsigned long arg)
 {
return cmd == TIOCSPGRP ? -ENOTTY : -EIO;
 }
@@ -1222,8 +1228,8 @@ static const struct file_operations hung
.read   = hung_up_tty_read,
.write  = hung_up_tty_write,
.poll   = hung_up_tty_poll,
-   .unlocked_ioctl = hung_up_tty_ioctl,
-   .compat_ioctl   = hung_up_tty_ioctl,
+   .ioctl  = hung_up_tty_ioctl,
+   .compat_ioctl   = hung_up_tty_compat_ioctl,
.release= tty_release,
 };
 



-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/