All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonas Jelonek <jelonek.jonas@gmail.com>
To: Sven Eckelmann <sven@narfation.org>,
	Wolfram Sang <wsa+renesas@sang-engineering.com>
Cc: Chris Packham <chris.packham@alliedtelesis.co.nz>,
	Andi Shyti <andi.shyti@kernel.org>, Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	linux-i2c@vger.kernel.org, Conor Dooley <conor+dt@kernel.org>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	Markus Stockhausen <markus.stockhausen@gmx.de>,
	Harshal Gohel <hg@simonwunderlich.de>
Subject: Re: [PATCH v5 05/11] i2c: rtl9300: check if xfer length is valid
Date: Sun, 10 Aug 2025 11:22:43 +0200	[thread overview]
Message-ID: <72f9bef0-5f4d-4eef-b853-9d3f6be07004@gmail.com> (raw)
In-Reply-To: <10704304.nUPlyArG6x@sven-desktop>


On 10.08.2025 09:01, Sven Eckelmann wrote:
> On Sunday, 10 August 2025 07:51:12 CEST Wolfram Sang wrote:
>> On Sat, Aug 09, 2025 at 10:07:06PM +0000, Jonas Jelonek wrote:
>>> Add an explicit check for the xfer length to 'rtl9300_i2c_config_xfer'
>>> to make sure a length < 1 or > 16 isn't accepted. While there shouldn't
>>> be a length > 16 because this is specified in the i2c_adapter_quirks, a
>>> length of 0 may be passed.
>> There is another quirk for this: I2C_AQ_NO_ZERO_LEN
>>
>> With that, you shouldn't need the code here.
> I am a little bit lost here. Let us assume that i2c_smbus_write_byte_data() is 
> called - for example by an in-kernel driver. We would then have following call 
> chain:
>
> * i2c_smbus_write_byte_data
> * i2c_smbus_xfer
> * __i2c_smbus_xfer
> * adapter->algo->smbus_xfer (aka rtl9300_i2c_smbus_xfer)
>
> But the quirk is only checked in i2c_check_for_quirks - and then on 
> `struct i2c_msg` and not `union i2c_smbus_data`. And this is only called by 
> __i2c_transfer (which is called by i2c_transfer, i2c_smbus_xfer_emulated, 
> ...). But on first glance, it didn't look like it will be called when using 
> i2c_smbus_write_byte_data - unless __i2c_smbus_xfer fails and must fall back 
> to i2c_smbus_xfer_emulated. I most likely missed something when doing a quick 
> check of the source code. Maybe you can point it out.

Thanks Sven.
I came to the same conclusion for now. The mentioned quirk doesn't seem to
prevent this for smbus_xfer. However, it doesn't harm to add it. This probably
applies to the existing quirks too, that they are not checked for.

So I think this check is necessary. It also ensures that [1] is kept in its purpose
more or less. To prevent any invalid length passed from everywhere. The
implementation of Quick in this driver is also problematic because it passes a
length of 0 internally. Thus, the next patch actually removes that completely.

> And I might have to point out that I am currently not next to the actual HW to 
> check if my statement that adapter->algo->smbus_xfer == rtl9300_i2c_smbus_xfer 
> is really true.

It's true, yes. See [2].

> Kind regards,
> 	Sven

Best regards,
Jonas

[1] https://lore.kernel.org/linux-i2c/20250809-i2c-rtl9300-multi-byte-v4-1-d71dd5eb6121@narfation.org/

  reply	other threads:[~2025-08-10  9:22 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-09 22:07 [PATCH v5 00/11] i2c: rework and extend RTL9300 I2C driver Jonas Jelonek
2025-08-09 22:07 ` [PATCH v5 01/11] i2c: rtl9300: use regmap fields and API for registers Jonas Jelonek
2025-08-09 22:07 ` [PATCH v5 02/11] i2c: rtl9300: fix channel number bound check Jonas Jelonek
2025-08-09 22:07 ` [PATCH v5 03/11] dt-bindings: i2c: realtek,rtl9301-i2c: fix wording and typos Jonas Jelonek
2025-08-18 15:10   ` Rob Herring (Arm)
2025-08-09 22:07 ` [PATCH v5 04/11] i2c: rtl9300: rename internal sda_pin to sda_num Jonas Jelonek
2025-08-09 22:07 ` [PATCH v5 05/11] i2c: rtl9300: check if xfer length is valid Jonas Jelonek
2025-08-10  5:51   ` Wolfram Sang
2025-08-10  7:01     ` Sven Eckelmann
2025-08-10  9:22       ` Jonas Jelonek [this message]
2025-08-09 22:07 ` [PATCH v5 06/11] i2c: rtl9300: remove SMBus Quick operation support Jonas Jelonek
2025-08-10  7:13   ` Sven Eckelmann
2025-08-10  9:31     ` Jonas Jelonek
2025-08-09 22:07 ` [PATCH v5 07/11] i2c: rtl9300: move setting SCL frequency to config_io Jonas Jelonek
2025-08-10  8:49   ` Markus Elfring
2025-08-10  8:54     ` Sven Eckelmann
2025-08-10  9:10     ` Jonas Jelonek
2025-08-09 22:07 ` [PATCH v5 08/11] i2c: rtl9300: do not set read mode on every transfer Jonas Jelonek
2025-08-09 22:07 ` [PATCH v5 09/11] i2c: rtl9300: separate xfer configuration and execution Jonas Jelonek
2025-08-09 22:07 ` [PATCH v5 10/11] dt-bindings: i2c: realtek,rtl9301-i2c: extend for RTL9310 support Jonas Jelonek
2025-08-18 15:13   ` Rob Herring (Arm)
2025-08-09 22:07 ` [PATCH v5 11/11] i2c: rtl9300: add support for RTL9310 I2C controller Jonas Jelonek
2025-08-10 10:39   ` Sven Eckelmann

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=72f9bef0-5f4d-4eef-b853-9d3f6be07004@gmail.com \
    --to=jelonek.jonas@gmail.com \
    --cc=andi.shyti@kernel.org \
    --cc=chris.packham@alliedtelesis.co.nz \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=hg@simonwunderlich.de \
    --cc=krzk+dt@kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=markus.stockhausen@gmx.de \
    --cc=robh@kernel.org \
    --cc=sven@narfation.org \
    --cc=wsa+renesas@sang-engineering.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.