From: Jiri Slaby <jslaby@suse.cz>
To: Arnd Bergmann <arnd@arndb.de>
Cc: jirislaby@gmail.com, linux-kernel@vger.kernel.org,
"salina@us.ibm.com" <salina@us.ibm.com>,
okir@suse.de, Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [PATCH 01/15] Char: lp, protect LPGETSTATUS with port_mutex
Date: Tue, 07 May 2013 17:41:06 +0200 [thread overview]
Message-ID: <51892092.6010907@suse.cz> (raw)
In-Reply-To: <201305071648.35039.arnd@arndb.de>
On 05/07/2013 04:48 PM, Arnd Bergmann wrote:
> On Tuesday 07 May 2013, Jiri Slaby wrote:
>> From: "salina@us.ibm.com" <salina@us.ibm.com>
>>
>> The patch fixes a problem in the lp driver that can cause oopses as
>> follows:
>> process A: calls lp_write, which in turn calls
>> parport_ieee1284_write_compat, and that invokes
>> parport_wait_peripheral
>> process B: meanwhile does an ioctl(LPGETSTATUS), which call
>> lp_release_parport when done. This function will set
>> physport->cad = NULL.
>> process A: parport_wait_peripheral tries to dereference
>> physport->cad and dies
>>
>> So, protect that code with the port_mutex in order to protect against
>> simultaneous calls to lp_read/lp_write.
>>
>> Similar protection is probably required for ioctl(LPRESET)...
>>
>> This patch was done by IBM a while back and we (at suse) have that
>> since at least 2004 in our repos. Let's make it upstream.
>
> Hmm, it seems the driver has changed a bit since 2004, at least when
> I added the lp_mutex to lp_open()/lp_ioctl(). It's probably worth
> taking a look at the bigger picture now, to combine lp_mutex with
> lp_table[minor].port_mutex. I don't see any reason why we can't always
> use the per-device mutex.
Yeah, it looks sensible to me too to get rid of the lp_mutex, another
BKL left-over. However I don't have the hardware, the patch I attached
was taken from our tree and tested, at least some time ago. Patches to
clean that mess up welcome.
thanks,
--
js
suse labs
prev parent reply other threads:[~2013-05-07 15:40 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-07 14:18 [PATCH 01/15] Char: lp, protect LPGETSTATUS with port_mutex Jiri Slaby
2013-05-07 14:18 ` [PATCH 02/15] mISDN: Add support for group membership check Jiri Slaby
2013-05-07 14:18 ` [PATCH 03/15] ehea: add alias entry for portN properties Jiri Slaby
2013-05-07 14:18 ` [PATCH 04/15] drm/cirrus: Correct register values for 16bpp Jiri Slaby
2013-05-07 14:18 ` Jiri Slaby
2013-05-07 14:18 ` [PATCH 05/15] connection tracking helper for SLP Jiri Slaby
2013-05-08 2:03 ` Pablo Neira Ayuso
2013-05-07 14:18 ` [PATCH 06/15] netfilter: Implement RFC 1123 for FTP conntrack Jiri Slaby
2013-05-07 14:18 ` [PATCH 07/15] hfs: avoid crash in hfs_bnode_create Jiri Slaby
2013-05-07 19:05 ` Vyacheslav Dubeyko
2013-05-08 15:26 ` [PATCH v2 07/14] " Jiri Slaby
2013-05-07 14:18 ` [PATCH 08/15] reiserfs: fix deadlock with nfs racing on create/lookup Jiri Slaby
2013-05-07 14:18 ` [PATCH 09/15] Make selection of 'readdir-plus' adapt to usage patterns Jiri Slaby
2013-05-07 14:27 ` Myklebust, Trond
2013-05-07 14:32 ` Jiri Slaby
2013-05-07 14:18 ` [PATCH 10/15] acpi: ec_sys: access user space with get_user()/put_user() Jiri Slaby
2013-05-07 14:18 ` [PATCH 11/15] nouveau: Make vga_switcheroo code depend on VGA_SWITCHEROO Jiri Slaby
2013-05-07 14:18 ` [PATCH 12/15] geodefb: Depend on X86_32 Jiri Slaby
2013-05-07 14:18 ` [PATCH 13/15] chipidea: Allow user to select PCI/IMX options Jiri Slaby
2013-05-08 9:07 ` Alexander Shishkin
2013-05-15 15:59 ` Jiri Slaby
2013-05-16 9:36 ` Alexander Shishkin
2013-05-22 8:51 ` Jiri Slaby
2013-05-22 11:10 ` Alexander Shishkin
2013-05-07 14:18 ` [PATCH 14/15] staging/sb105x: remove asm/segment.h dependency Jiri Slaby
2013-05-07 14:18 ` [PATCH 15/15] ptp: PTP_1588_CLOCK_PCH depends on x86 Jiri Slaby
2013-05-07 19:29 ` Richard Cochran
2013-05-14 14:20 ` Jiri Slaby
2013-05-14 18:12 ` Ben Hutchings
2013-05-20 22:31 ` Keller, Jacob E
2013-05-07 14:48 ` [PATCH 01/15] Char: lp, protect LPGETSTATUS with port_mutex Arnd Bergmann
2013-05-07 15:41 ` Jiri Slaby [this message]
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=51892092.6010907@suse.cz \
--to=jslaby@suse.cz \
--cc=arnd@arndb.de \
--cc=gregkh@linuxfoundation.org \
--cc=jirislaby@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=okir@suse.de \
--cc=salina@us.ibm.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.