From: Jacob Keller <jacob.e.keller@intel.com>
To: Fedor Pchelkin <pchelkin@ispras.ru>,
Tony Nguyen <anthony.l.nguyen@intel.com>
Cc: Agalakov Daniil <ade@amicon.ru>, <lvc-project@linuxtesting.org>,
"Roman Razov" <rrv@amicon.ru>,
Przemek Kitszel <przemyslaw.kitszel@intel.com>,
<linux-kernel@vger.kernel.org>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"Eric Dumazet" <edumazet@google.com>,
<intel-wired-lan@lists.osuosl.org>, <netdev@vger.kernel.org>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Daniil Iskhakov <dish@amicon.ru>,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH net 2/3] e1000: fix endianness conversion of uninitialized words
Date: Wed, 25 Mar 2026 16:01:40 -0700 [thread overview]
Message-ID: <3a0f74f0-7031-43e3-8268-473badd9f1fe@intel.com> (raw)
In-Reply-To: <20260325180127-711d8e8fbff840853081f11e-pchelkin@ispras>
On 3/25/2026 8:19 AM, Fedor Pchelkin wrote:
> Hi,
>
> On Tue, 24. Mar 16:26, Tony Nguyen wrote:
>> On 3/18/2026 5:05 AM, Agalakov Daniil wrote:
>>> [Why]
>>> In e1000_set_eeprom(), the eeprom_buff is allocated to hold a range of
>>> words. However, only the boundary words (the first and the last) are
>>> populated from the EEPROM if the write request is not word-aligned.
>>> The words in the middle of the buffer remain uninitialized because they
>>> are intended to be completely overwritten by the new data via memcpy().
>>>
>>> The previous implementation had a loop that performed le16_to_cpus()
>>> on the entire buffer. This resulted in endianness conversion being
>>> performed on uninitialized memory for all interior words.
>>>
>>> Fix this by converting the endianness only for the boundary words
>>> immediately after they are successfully read from the EEPROM.
>>>
>>> Found by Linux Verification Center (linuxtesting.org) with SVACE.
>>>
>>> Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
>>
>> While this is definitely better, I'm not sure there's a bug here since it's
>> being immediately overwritten. Seems like this patch would be better going
>> to *-next as an improvement.
>
> It's worth stating in the commit message that the uninitialized memory is
> touched with le16_to_cpus() in the loop only on BE systems. Little-endian
> ones are not affected - le16_to_cpus() is a no-op there.
>
> Anyway, for the BE case, touching and manipulating uninit memory bytes is
> still in general considered a bug, even if this memory is overwritten a
> few lines after that. I guess if KMSAN supported big-endian architectures,
> it would hit this, and that wouldn't be a false-positive.
>
> I'm not aware of the details on how you treat the bugs in these drivers
> for BE-systems: maybe they aren't prioritized and then would occasionnaly
> go as -next material. But, again, this situation looks like a real bug
> worth fixing on BE-systems.
>
Typically the bar for a fixes and a net change is that it requires some
user visible behavioral impact. That's where the hesitance on our end
comes from: how does this cause a user-visible bug?
If there are truly user-visible impact on BE system for touching and
manipulating the uninitialized memory, then it makes sense to go to net
for me. I guess "KASAN/UBSAN complains you touched uninitialized memory"
would be such a bug.
Alternatively: is there a risk of some side channel method to capture
that uninitialized data and leak kernel memory? I don't recall enough to
know whether that would be an issue here...
I don't personally have an objection to going through net (besides
fixing the commit hash for the Fixes: tag on the patch that was wrong)
since its an obvious fix.
next prev parent reply other threads:[~2026-03-25 23:01 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-18 12:05 [PATCH net 0/3] e1000/e1000e: fix uninitialized memory access in EEPROM write Agalakov Daniil
2026-03-18 12:05 ` [PATCH net 1/3] e1000: check return value of e1000_read_eeprom Agalakov Daniil
2026-03-18 15:38 ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-18 12:05 ` [PATCH net 2/3] e1000: fix endianness conversion of uninitialized words Agalakov Daniil
2026-03-18 15:38 ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-24 23:26 ` Tony Nguyen
2026-03-25 15:19 ` Fedor Pchelkin
2026-03-25 23:01 ` Jacob Keller [this message]
2026-03-18 12:05 ` [PATCH net 3/3] e1000e: " Agalakov Daniil
2026-03-18 15:39 ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-24 23:27 ` Tony Nguyen
2026-03-25 15:02 ` [PATCH net v2] e1000: check return value of e1000_read_eeprom Agalakov Daniil
2026-03-25 15:42 ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-25 15:16 ` [PATCH net-next v2 0/2] e1000/e1000e: limit endianness conversion to boundary words Agalakov Daniil
2026-03-25 15:16 ` [PATCH net-next v2 1/2] e1000: " Agalakov Daniil
2026-03-26 7:29 ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-25 15:16 ` [PATCH net-next v2 2/2] e1000e: " Agalakov Daniil
2026-03-26 7:28 ` [Intel-wired-lan] " Loktionov, Aleksandr
2026-03-25 16:00 ` [PATCH net v3] e1000: check return value of e1000_read_eeprom Agalakov Daniil
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=3a0f74f0-7031-43e3-8268-473badd9f1fe@intel.com \
--to=jacob.e.keller@intel.com \
--cc=ade@amicon.ru \
--cc=andrew+netdev@lunn.ch \
--cc=anthony.l.nguyen@intel.com \
--cc=davem@davemloft.net \
--cc=dish@amicon.ru \
--cc=edumazet@google.com \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lvc-project@linuxtesting.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=pchelkin@ispras.ru \
--cc=przemyslaw.kitszel@intel.com \
--cc=rrv@amicon.ru \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox