lkml.org 
[lkml]   [2023]   [Oct]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH 1/1] tty: n_gsm: Avoid sleeping during .write() whilst atomic
    On Thu, 05 Oct 2023, Greg Kroah-Hartman wrote:

    > On Thu, Oct 05, 2023 at 12:46:32PM +0100, Lee Jones wrote:
    > > On Thu, 05 Oct 2023, Starke, Daniel wrote:
    > >
    > > > > > Would something like this tick that box?
    > > > > >
    > > > > > diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c index
    > > > > > 1f3aba607cd51..5c1d2fcd5d9e2 100644
    > > > > > --- a/drivers/tty/n_gsm.c
    > > > > > +++ b/drivers/tty/n_gsm.c
    > > > > > @@ -3716,6 +3716,10 @@ static ssize_t gsmld_write(struct tty_struct *tty, struct file *file,
    > > > > > if (!gsm)
    > > > > > return -ENODEV;
    > > > > >
    > > > > > + /* The GSM line discipline does not support binding to console */
    > > > > > + if (strncmp(tty->name, "tty", 3))
    > > > > > + return -EINVAL;
    > > > >
    > > > > No, that's not going to work, some consoles do not start with "tty" :(
    > >
    > > Ah, you mean there are others that we need to consider?
    > >
    > > I was just covering off con_write() from drivers/tty/vt/vt.c.
    > >
    > > Does anyone have a counter proposal?
    >
    > consoles are dynamically assigned, the device knows if it is a console
    > or not, so there is a way to determine this at runtime. It's not a
    > device naming thing at all.

    It's not a device naming thing, but it is a ... :)

    Okay, here's another uninformed stab in the dark:

    diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
    index 1f3aba607cd51..ddf00f6a4141d 100644
    --- a/drivers/tty/n_gsm.c
    +++ b/drivers/tty/n_gsm.c
    @@ -3629,6 +3629,10 @@ static int gsmld_open(struct tty_struct *tty)
    if (tty->ops->write == NULL)
    return -EINVAL;

    + /* The GSM line discipline does not support binding to console */
    + if (tty->driver->type == TTY_DRIVER_TYPE_CONSOLE)
    + return -EINVAL;
    +
    /* Attach our ldisc data */
    gsm = gsm_alloc_mux();
    if (gsm == NULL)
    This seems to allow for the real serial devices (TTY_DRIVER_TYPE_SERIAL)
    suggested by Daniel.

    --
    Lee Jones [李琼斯]

    \
     
     \ /
      Last update: 2023-10-05 18:21    [W:4.649 / U:0.328 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site