Skip to content

Feature/wb85 wbec drivers rebase - #241

Closed
pgasheev wants to merge 15 commits into
dev/v6.8from
feature/wb85-wbec-drivers-rebase
Closed

Feature/wb85 wbec drivers rebase#241
pgasheev wants to merge 15 commits into
dev/v6.8from
feature/wb85-wbec-drivers-rebase

Conversation

@pgasheev

@pgasheev pgasheev commented Aug 22, 2024

Copy link
Copy Markdown
Contributor

Ребейз #234 на ветку dev/v6.8
Также проверил через checkpatch, можно финально смотреть.

Потестить можно через тестинг-сет

echo "deb http://deb.wirenboard.com/all experimental.wb85_wbec main" > /etc/apt/sources.list.d/wb85_wbec.list
apt update; apt upgrade
wb-ec-firmware-update
reboot

@pgasheev
pgasheev requested a review from webconn August 22, 2024 14:11
Comment thread arch/arm64/boot/dts/allwinner/sun50i-h616-wirenboard85x.dtsi
Comment thread arch/arm64/boot/dts/allwinner/sun50i-h616-wirenboard85x.dtsi
Comment thread arch/arm64/boot/dts/allwinner/sun50i-h616-wirenboard85x.dtsi
Comment thread arch/arm64/configs/wb8.config

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

может сразу сделать какую-нибудь отладочную ручку для того, чтобы читать регистры pmic? коллеги-электронщики часто такое хотят

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, полезная штука, подумаю как сделать

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Но это ручка думаю будет через debugfs, в этот драйвер она вроде не особо ложится и изменений тут не потребуется

@pgasheev
pgasheev requested a review from webconn August 28, 2024 13:14

@webconn webconn left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

debugfs драйвер на потом в итоге отложим?

Comment thread arch/arm64/boot/dts/allwinner/sun50i-h616-wirenboard85x.dtsi
@webconn

webconn commented Sep 11, 2024

Copy link
Copy Markdown
Contributor

на железе не проверял

@pgasheev

Copy link
Copy Markdown
Contributor Author

debugfs драйвер на потом в итоге отложим?

Так там драйвера отдельного я думаю не будет, у нас уже есть в debugfs возможность читать/писать регистры. Вот на это скриптом можно натянуть чтение регистров PMIC

@pgasheev

Copy link
Copy Markdown
Contributor Author

Rebase #249

@pgasheev pgasheev closed this Sep 12, 2024
@pgasheev
pgasheev deleted the feature/wb85-wbec-drivers-rebase branch September 12, 2024 06:28
taraant pushed a commit that referenced this pull request Apr 14, 2026
[ Upstream commit fecacfc95f195b99c71c579a472120d0b4ed65fa ]

iavf incorrectly uses real_num_tx_queues for ETH_SS_STATS. Since the
value could change in runtime, we should use num_tx_queues instead.

Moreover iavf_get_ethtool_stats() uses num_active_queues while
iavf_get_sset_count() and iavf_get_stat_strings() use
real_num_tx_queues, which triggers out-of-bounds writes when we do
"ethtool -L" and "ethtool -S" simultaneously [1].

For example when we change channels from 1 to 8, Thread 3 could be
scheduled before Thread 2, and out-of-bounds writes could be triggered
in Thread 3:

Thread 1 (ethtool -L)       Thread 2 (work)        Thread 3 (ethtool -S)
iavf_set_channels()
...
iavf_alloc_queues()
-> num_active_queues = 8
iavf_schedule_finish_config()
                                                   iavf_get_sset_count()
                                                   real_num_tx_queues: 1
                                                   -> buffer for 1 queue
                                                   iavf_get_ethtool_stats()
                                                   num_active_queues: 8
                                                   -> out-of-bounds!
                            iavf_finish_config()
                            -> real_num_tx_queues = 8

Use immutable num_tx_queues in all related functions to avoid the issue.

[1]
 BUG: KASAN: vmalloc-out-of-bounds in iavf_add_one_ethtool_stat+0x200/0x270
 Write of size 8 at addr ffffc900031c9080 by task ethtool/5800

 CPU: 1 UID: 0 PID: 5800 Comm: ethtool Not tainted 6.19.0-enjuk-08403-g8137e3db7f1c #241 PREEMPT(full)
 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
 Call Trace:
  <TASK>
  dump_stack_lvl+0x6f/0xb0
  print_report+0x170/0x4f3
  kasan_report+0xe1/0x180
  iavf_add_one_ethtool_stat+0x200/0x270
  iavf_get_ethtool_stats+0x14c/0x2e0
  __dev_ethtool+0x3d0c/0x5830
  dev_ethtool+0x12d/0x270
  dev_ioctl+0x53c/0xe30
  sock_do_ioctl+0x1a9/0x270
  sock_ioctl+0x3d4/0x5e0
  __x64_sys_ioctl+0x137/0x1c0
  do_syscall_64+0xf3/0x690
  entry_SYSCALL_64_after_hwframe+0x77/0x7f
 RIP: 0033:0x7f7da0e6e36d
 ...
  </TASK>

 The buggy address belongs to a 1-page vmalloc region starting at 0xffffc900031c9000 allocated at __dev_ethtool+0x3cc9/0x5830
 The buggy address belongs to the physical page: page: refcount:1 mapcount:0 mapping:0000000000000000
 index:0xffff88813a013de0 pfn:0x13a013
 flags: 0x200000000000000(node=0|zone=2)
 raw: 0200000000000000 0000000000000000 dead000000000122 0000000000000000
 raw: ffff88813a013de0 0000000000000000 00000001ffffffff 0000000000000000
 page dumped because: kasan: bad access detected

 Memory state around the buggy address:
  ffffc900031c8f80: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
  ffffc900031c9000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 >ffffc900031c9080: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
                    ^
  ffffc900031c9100: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
  ffffc900031c9180: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8

Fixes: 64430f7 ("iavf: Fix displaying queue statistics shown by ethtool")
Signed-off-by: Kohei Enju <kohei@enjuk.jp>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants