From: Peter Hurley <peter@hurleysoftware.com>
To: George Spelvin <linux@horizon.com>
Cc: jslaby@suse.cz, linux-serial@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: 3.8-rc regression with pps-ldisc due to 70ece7a731
Date: Wed, 06 Feb 2013 10:53:40 -0500 [thread overview]
Message-ID: <1360166020.3298.42.camel@thor.lan> (raw)
In-Reply-To: <20130204010303.24971.qmail@science.horizon.com>
Hi George,
On Sun, 2013-02-03 at 20:03 -0500, George Spelvin wrote:
> "TTY: n_tty, add ldisc data to n_tty"
>
> The PPS line discipline has incestuous relations with the n_tty line
> discipline, using some hooks to call internal routines.
>
> However, I started noticing violent kernel explosions when testing 3.8-rc,
> and after a bit of digging, I think it's due to the fact that the PPS code
> assumes that the ->ldisc pointer is available to hold a pointer to a "pps"
> structure, but this commit started using it in the core n_tty discipline.
>
> If you look at pps_tty_open in drivers/pps/clients/pps-ldisc.c, you can
> see it does:
>
> pps = pps_register_source(&info, PPS_CAPTUREBOTH | \
> PPS_OFFSETASSERT | PPS_OFFSETCLEAR);
> if (pps == NULL) {
> pr_err("cannot register PPS source \"%s\"\n", info.path);
> return -ENOMEM;
> }
> tty->disc_data = pps;
>
> /* Should open N_TTY ldisc too */
> ret = alias_n_tty_open(tty);
>
> Where "alias_n_tty_open" is filled in by n_tty_inherit_ops() to be
> n_tty_open(). However, in this commit, n_tty_open() now allocates
> its own structure and overwrites the disc_data pointer, leading to an
> earth-shattering kaboom as NULL pointers are dereferenced in interrupt
> handlers.
Yuck. Little wonder it broke.
> My first thought is to reserve a pointer in n_tty_data for the
> pps structure and update the pps code to chase pointers one more
> level. But I wanted to solicit opinions.
Tight coupling is what caused this to break in the first place -- I
don't think tighter coupling is the right answer.
Alternate coming...
Regards,
Peter Hurley
next prev parent reply other threads:[~2013-02-06 15:53 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-04 1:03 3.8-rc regression with pps-ldisc due to 70ece7a731 George Spelvin
2013-02-04 4:18 ` George Spelvin
2013-02-04 7:08 ` George Spelvin
2013-02-06 16:15 ` Peter Hurley
2013-02-06 15:53 ` Peter Hurley [this message]
2013-02-06 19:45 ` George Spelvin
2013-02-06 20:31 ` Peter Hurley
2013-02-06 15:55 ` [PATCH 0/4] tty, pps: decouple pps Peter Hurley
2013-02-06 15:55 ` [PATCH 1/4] pps: Decouple N_PPS from N_TTY Peter Hurley
2013-02-06 15:55 ` [PATCH 2/4] pps: Don't crash the machine when exiting will do Peter Hurley
2013-02-06 15:55 ` [PATCH 3/4] pps: Use lookup list to reduce ldisc coupling Peter Hurley
2013-02-06 16:20 ` Jiri Slaby
2013-02-06 16:41 ` Peter Hurley
2013-02-06 19:34 ` George Spelvin
2013-02-06 20:09 ` Peter Hurley
2013-02-06 22:19 ` George Spelvin
2013-02-06 23:15 ` Peter Hurley
2013-02-06 15:55 ` [PATCH 4/4] tty: Remove ancient hardpps() Peter Hurley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1360166020.3298.42.camel@thor.lan \
--to=peter@hurleysoftware.com \
--cc=jslaby@suse.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux@horizon.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.