lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 2 Jul 2024 22:25:44 +0200
From: Heiner Kallweit <hkallweit1@...il.com>
To: Krzysztof Olędzki <ole@....pl>,
 Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
 Guenter Roeck <linux@...ck-us.net>, Bartosz Golaszewski <brgl@...ev.pl>
Cc: stable@...r.kernel.org, linux-i2c@...r.kernel.org,
 linux-hwmon@...r.kernel.org,
 Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: Regression caused by "eeprom: at24: Probe for DDR3 thermal sensor
 in the SPD case" - "sysfs: cannot create duplicate filename"

On 23.06.2024 20:47, Krzysztof Olędzki wrote:
> Hi,
> 
> After upgrading kernel to Linux 6.6.34 on one of my systems, I noticed "sysfs: cannot create duplicate filename" and i2c registration errors in dmesg, please see below.
> 
> This seems to be related to https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=4d5ace787273cb159bfdcf1c523df957938b3e42 - reverting the change fixes the problem.
> 
> Note that jc42 devices are registered correctly and work with and without the change.
> 
> # grep . /sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-*/name
> /sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-0018/name:jc42
> /sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-0019/name:jc42
> /sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-001a/name:jc42
> /sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-001b/name:jc42
> /sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-0050/name:spd
> /sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-0051/name:spd
> /sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-0052/name:spd
> /sys/devices/pci0000:00/0000:00:1f.3/i2c-12/12-0053/name:spd
> 
> # sensors|grep -A4 jc42-i2c
> jc42-i2c-12-1b
> Adapter: SMBus I801 adapter at 3000
> temp1:        +33.2°C  (low  =  +0.0°C)
>                        (high = +91.0°C, hyst = +91.0°C)
>                        (crit = +95.0°C, hyst = +95.0°C)
> --
> jc42-i2c-12-19
> Adapter: SMBus I801 adapter at 3000
> temp1:        +33.5°C  (low  =  +0.0°C)
>                        (high = +91.0°C, hyst = +91.0°C)
>                        (crit = +95.0°C, hyst = +95.0°C)
> --
> jc42-i2c-12-1a
> Adapter: SMBus I801 adapter at 3000
> temp1:        +33.5°C  (low  =  +0.0°C)
>                        (high = +91.0°C, hyst = +91.0°C)
>                        (crit = +95.0°C, hyst = +95.0°C)
> --
> jc42-i2c-12-18
> Adapter: SMBus I801 adapter at 3000
> temp1:        +33.2°C  (low  =  +0.0°C)
>                        (high = +91.0°C, hyst = +91.0°C)
>                        (crit = +95.0°C, hyst = +95.0°C)
> 
> 
> dmesg:
> [    0.000000] DMI: Dell Inc. PowerEdge T110 II/0PM2CW, BIOS 2.10.0 05/24/2018
> (...)
> [    7.681132] i2c_dev: i2c /dev entries driver
> [    7.687116] i2c i2c-12: 4/4 memory slots populated (from DMI)
> [    7.690623] at24 12-0050: 256 byte spd EEPROM, read-only
> [    7.691812] i2c i2c-12: Successfully instantiated SPD at 0x50
> [    7.698246] at24 12-0051: 256 byte spd EEPROM, read-only
> [    7.699465] i2c i2c-12: Successfully instantiated SPD at 0x51
> [    7.700043] i2c i2c-12: Failed to register i2c client jc42 at 0x19 (-16)
> [    7.700047] i2c i2c-12: Failed creating jc42 at 0x19
> [    7.705248] sysfs: cannot create duplicate filename '/devices/pci0000:00/0000:00:1f.3/i2c-12/12-001a'
> [    7.711617]  <TASK>
> [    7.712612]  dump_stack_lvl+0x37/0x4a
> [    7.712612]  sysfs_warn_dup+0x55/0x61
> [    7.715616]  sysfs_create_dir_ns+0xa6/0xd2
> [    7.716620]  kobject_add_internal+0xc3/0x1c0
> [    7.716620]  kobject_add+0xba/0xe4
> [    7.719615]  ? device_add+0x53/0x726
> [    7.720611]  device_add+0x132/0x726
> [    7.720611]  i2c_new_client_device+0x1ee/0x246
> [    7.723616]  at24_probe+0x5f8/0x666
> [    7.724642]  ? __pfx_at24_read+0x10/0x10
> [    7.724642]  ? __pfx_at24_write+0x10/0x10
> [    7.724642]  ? __pfx___device_attach_driver+0x10/0x10
> [    7.727619]  i2c_device_probe+0x1b7/0x240
> [    7.728612]  really_probe+0x101/0x248
> [    7.728612]  __driver_probe_device+0xbb/0xed
> [    7.731620]  driver_probe_device+0x1a/0x72
> [    7.732621]  __device_attach_driver+0x82/0x96
> [    7.732621]  bus_for_each_drv+0xa6/0xd4
> [    7.732621]  __device_attach+0xa8/0x12a
> [    7.735619]  bus_probe_device+0x31/0x95
> [    7.736614]  device_add+0x265/0x726
> [    7.736614]  i2c_new_client_device+0x1ee/0x246
> [    7.739618]  i2c_register_spd+0x1a1/0x1ed
> [    7.740613]  i801_probe+0x589/0x603
> [    7.740613]  ? up_write+0x37/0x4d
> [    7.740613]  ? kernfs_add_one+0x104/0x126
> [    7.743618]  ? __raw_spin_unlock_irqrestore+0x14/0x29
> [    7.744612]  pci_device_probe+0xbe/0x12f
> [    7.744612]  really_probe+0x101/0x248
> [    7.744612]  __driver_probe_device+0xbb/0xed
> [    7.747618]  driver_probe_device+0x1a/0x72
> [    7.748612]  __driver_attach_async_helper+0x2d/0x42
> [    7.748612]  async_run_entry_fn+0x25/0xa0
> [    7.748612]  process_scheduled_works+0x193/0x291
> [    7.748612]  worker_thread+0x1c5/0x21f
> [    7.751619]  ? __pfx_worker_thread+0x10/0x10
> [    7.752611]  kthread+0xf6/0xfe
> [    7.752611]  ? __pfx_kthread+0x10/0x10
> [    7.752611]  ret_from_fork+0x23/0x35
> [    7.755621]  ? __pfx_kthread+0x10/0x10
> [    7.756613]  ret_from_fork_asm+0x1b/0x30
> [    7.756613]  </TASK>
> [    7.759637] i2c i2c-12: Failed to register i2c client jc42 at 0x1a (-17)
> [    7.760815] at24 12-0052: 256 byte spd EEPROM, read-only
> [    7.762047] i2c i2c-12: Successfully instantiated SPD at 0x52
> [    7.765252] i2c i2c-12: Failed to register i2c client jc42 at 0x1b (-16)
> [    7.766126] at24 12-0053: 256 byte spd EEPROM, read-only
> [    7.767584] i2c i2c-12: Successfully instantiated SPD at 0x53
> 
> Thanks,
>  Krzysztof

Could you please test whether the attached two experimental patches fix the issue for you?
They serialize client device instantiation per I2C adapter, and include the client device
name in the check whether a bus address is busy.

View attachment "0001-i2c-Include-device-name-in-check-i2c_check_addr_busy.patch" of type "text/plain" (4098 bytes)

View attachment "0002-i2c-Serialize-client-device-instantiation.patch" of type "text/plain" (5189 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ