From: Marc Kleine-Budde <mkl@pengutronix.de>
To: Thomas Gleixner <tglx@linutronix.de>,
Oliver Hartkopp <socketcan@hartkopp.net>
Cc: Wolfgang Grandegger <wg@grandegger.com>,
khurram gulzar <khurramgulzar@gmail.com>,
linux-can@vger.kernel.org
Subject: Re: [PATCH] can: sja1000_isa: add locking for indirect register access mode
Date: Tue, 15 Apr 2014 23:49:17 +0200 [thread overview]
Message-ID: <534DA95D.60506@pengutronix.de> (raw)
In-Reply-To: <alpine.DEB.2.02.1404152323500.22697@ionos.tec.linutronix.de>
[-- Attachment #1: Type: text/plain, Size: 2391 bytes --]
On 04/15/2014 11:26 PM, Thomas Gleixner wrote:
> On Tue, 15 Apr 2014, Oliver Hartkopp wrote:
>
>> When accessing the SJA1000 controller registers in the indirect access mode,
>> writing the register number and reading/writing the data has to be an atomic
>> attempt.
>>
>> As the sja1000_isa driver is an old style driver with a fixed number of
>> instances the locking variable depends on the same index like all the other
>> configuration elements given on the module command line.
>>
>> As a positive side effect dev->dev_id is populated by the instance index,
>> which was missing in 3e66d0138c05d9 ("can: populate netdev::dev_id for udev
>> discrimination").
>>
>> Reported-by: Marc Kleine-Budde <mkl@pengutronix.de>
>> Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
>>
>> ---
>>
>> diff --git a/drivers/net/can/sja1000/sja1000_isa.c b/drivers/net/can/sja1000/sja1000_isa.c
>> index df136a2..014695d 100644
>> --- a/drivers/net/can/sja1000/sja1000_isa.c
>> +++ b/drivers/net/can/sja1000/sja1000_isa.c
>> @@ -46,6 +46,7 @@ static int clk[MAXDEV];
>> static unsigned char cdr[MAXDEV] = {[0 ... (MAXDEV - 1)] = 0xff};
>> static unsigned char ocr[MAXDEV] = {[0 ... (MAXDEV - 1)] = 0xff};
>> static int indirect[MAXDEV] = {[0 ... (MAXDEV - 1)] = -1};
>> +static spinlock_t indirect_lock[MAXDEV]; /* lock for indirect access mode */
>
> You need to initialize the spinlock if you want to survive lockdep.
>
> Either use the proper static initializer or do an explicit
> spin_lock_init() on each of the locks before using them.
There's a spin_lock_init in the probe function:
> static int sja1000_isa_probe(struct platform_device *pdev)
> @@ -169,6 +177,7 @@ static int sja1000_isa_probe(struct platform_device *pdev)
> if (iosize == SJA1000_IOSIZE_INDIRECT) {
> priv->read_reg = sja1000_isa_port_read_reg_indirect;
> priv->write_reg = sja1000_isa_port_write_reg_indirect;
> + spin_lock_init(&indirect_lock[idx]);
> } else {
> priv->read_reg = sja1000_isa_port_read_reg;
> priv->write_reg = sja1000_isa_port_write_reg;
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 242 bytes --]
next prev parent reply other threads:[~2014-04-15 21:49 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CA+s8ZrqFBun4bo2rJJFHb0FrV7m7PLybUVM+jjahKsdW8bdnaQ@mail.gmail.com>
2014-04-15 9:55 ` Problem with Eurotech COM1273 Dual Channel CAN PC104 Module Wolfgang Grandegger
2014-04-15 10:50 ` Oliver Hartkopp
[not found] ` <CA+s8ZroY7j8MLpFQh568QdeB24zBwVAVXbi7RzQF+baFi+Mpkw@mail.gmail.com>
2014-04-15 11:55 ` Oliver Hartkopp
[not found] ` <CA+s8Zrqrd_U0g1GRCDzXncgWLA_kO3Hyhjwy6Oe1S0cYohm2og@mail.gmail.com>
2014-04-15 12:00 ` Oliver Hartkopp
2014-04-15 12:33 ` Marc Kleine-Budde
2014-04-15 13:19 ` Oliver Hartkopp
2014-04-15 13:42 ` Marc Kleine-Budde
2014-04-15 17:30 ` [PATCH] can: sja1000_isa: add locking for indirect register access mode Oliver Hartkopp
2014-04-15 21:26 ` Thomas Gleixner
2014-04-15 21:49 ` Marc Kleine-Budde [this message]
2014-04-16 8:48 ` Thomas Gleixner
2014-04-17 19:23 ` Marc Kleine-Budde
2014-04-21 17:39 ` Oliver Hartkopp
[not found] ` <CA+s8ZroSGpijgG4ruk2T1V5Vp1WrCcVjVPPrqGU-rQSDEUxzXg@mail.gmail.com>
2014-04-24 11:41 ` Oliver Hartkopp
2014-04-26 19:18 ` [PATCH] slip: fix spinlock variant Oliver Hartkopp
2014-04-28 3:35 ` David Miller
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=534DA95D.60506@pengutronix.de \
--to=mkl@pengutronix.de \
--cc=khurramgulzar@gmail.com \
--cc=linux-can@vger.kernel.org \
--cc=socketcan@hartkopp.net \
--cc=tglx@linutronix.de \
--cc=wg@grandegger.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.