All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Wolfram Sang <wsa@the-dreams.de>
Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] eeprom: at24: Add support for large EEPROMs connected to SMBus adapters
Date: Wed, 25 Mar 2015 07:11:31 -0700	[thread overview]
Message-ID: <5512C213.7030705@roeck-us.net> (raw)
In-Reply-To: <20150319213937.GA899@katana>

On 03/19/2015 02:39 PM, Wolfram Sang wrote:
>
>> Turns out this is really easy to reproduce. One process reads
>> the eeprom over and over again, another runs i2cdump in a loop,
>> and voila ... lots of corruptions. Scary, especially considering
>> how wide-spread this kind of i2c access is in the kernel.
>
> A coccinelle script should at least be able to find vulnerable code
> paths, maybe even fix it. But not today for me... Thanks for testing and
> sharing the results!
>

Wolfram,

just to give you an update: I do have some code, but it is a bit messy,
and it doesn't work well for ds2482 (the chip behind it still hangs up
if I access it in parallel through i2c-dev). On top of that, it causes
pretty significant slow-downs when accessing other devices on the same
bus at the same time. Not surprising, I guess, since it expands the scope
of the bus lock significantly.

I thought about introducing a client lock, but that does not work because
of the way i2c-dev is written (creating its own 'shadow' client structure).
An address lock (ie a client lock based on <bus, address> instead of one
residing in the client structure) seems to be too expensive.

So right now I don't really know how to proceed, or if to proceed at all.
I'll think about it some more, but given how wide-spread the problem is
in the kernel, I might just leave it alone, and keep the at24 changes
out of tree.

Ultimately, the real problem is how i2c-dev accesses a client, not how
i2c client drivers (who assume they have exclusive access to a chip)
handle multi-command sequences. Forcing extensive locking on all drivers
because of i2c-dev just doesn't seem to be the right thing to do.

Guenter

  reply	other threads:[~2015-03-25 14:11 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-04 16:23 [PATCH] eeprom: at24: Add support for large EEPROMs connected to SMBus adapters Guenter Roeck
2015-02-04 16:23 ` Guenter Roeck
2015-02-04 17:47 ` Wolfram Sang
2015-02-04 19:08   ` Guenter Roeck
2015-02-04 19:08     ` Guenter Roeck
2015-02-04 23:35     ` Wolfram Sang
2015-02-05  0:26       ` Guenter Roeck
2015-02-05  0:26         ` Guenter Roeck
2015-02-05 14:40         ` Wolfram Sang
2015-02-05 17:53           ` Guenter Roeck
     [not found]             ` <20150205175326.GA26691-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2015-02-12  4:01               ` Guenter Roeck
2015-02-12  4:01                 ` Guenter Roeck
2015-02-16 12:09                 ` Wolfram Sang
2015-02-16 15:37                   ` Guenter Roeck
2015-03-17  4:20                   ` Guenter Roeck
2015-03-17  4:20                     ` Guenter Roeck
2015-03-18 13:27                     ` Wolfram Sang
2015-03-19  3:24                       ` Guenter Roeck
     [not found]                         ` <550A4162.8000009-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2015-03-19  8:16                           ` Wolfram Sang
2015-03-19  8:16                             ` Wolfram Sang
2015-03-19 13:30                             ` Guenter Roeck
2015-03-19 13:30                               ` Guenter Roeck
2015-03-19 17:43                             ` Guenter Roeck
2015-03-19 17:43                               ` Guenter Roeck
2015-03-19 21:39                               ` Wolfram Sang
2015-03-25 14:11                                 ` Guenter Roeck [this message]
     [not found]                                   ` <5512C213.7030705-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2015-03-25 16:15                                     ` Wolfram Sang
2015-03-25 16:15                                       ` Wolfram Sang
2015-03-25 16:37                                       ` Guenter Roeck
2015-03-25 16:37                                         ` Guenter Roeck
2015-03-27  8:09                                   ` Wolfram Sang
2015-03-27 12:51                                     ` Guenter Roeck
2015-03-27 13:01                                       ` Wolfram Sang
2015-03-27 13:14                                         ` Guenter Roeck
2015-03-27 15:27                                           ` Wolfram Sang
2015-03-27 15:42                                             ` Guenter Roeck
2015-03-27 15:42                                               ` Guenter Roeck
2015-02-04 20:33   ` Guenter Roeck

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=5512C213.7030705@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=wsa@the-dreams.de \
    /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.