[PATCH net 0/2] net/iucv: two fixes in the HiperSockets receive path
flat view
DORMANTno replies
From: Bryam Vargas via B4 Relay <devnull+hexlabsecurity.proton.me@kernel.org>
Date: 2026-10-23 02:48:34
Also in:
b4-sent, linux-s390, lkml
Two bugs in the HiperSockets receive path that predate the socket-locking rework [1]; review and testing of that rework turned them up. Neither depends on it. 1/2 clears hs_dev before the socket drops its reference on the device and marks the accesses that race with it: afiucv_hs_rcv() compares hs_dev under iucv_sk_list.lock while close() clears it under lock_sock(). Hidayath Khan caught the racing pair with KCSAN under z/VM [2] and suggested the fix. The listener's child now takes its device from the frame instead of reading the listener's field in softirq. This is an ordering fix with no known crash. 2/2 stops counting the SHT's empty frame against the receive window (the peer does not count it) and drops the WARN_ON on the overrun path, which a peer reaches from the network by sending past its window. Only frames with data count now; a zero-length data frame, which already ends the stream for its reader, is no longer counted either. 2/2 applies on its own and goes to stable. Based on net f4377bf85887. The same two patches apply on net-next 8df0638138d3, where the test set ran, and on mainline (7.3-rc7); the SHT case below ran on this base as well. Tested on an s390x guest under QEMU TCG with KASAN and lockdep on. QEMU has no HiperSockets adapter and its s390x CPU emulation lacked things this needs: the adapter is one I wrote, under the real qeth and qdio drivers, the CPU carries my patches, and there is no IBM Z to compare against. With 2/2 an SHT read while frames wait in backlog_skb_q gives EOF instead of WARN plus -EFAULT. 1/2 does not change any result in the rework's test set; its race shows under KCSAN, not here. Logs on request. [1] https://lore.kernel.org/netdev/20261011-b4-disp-410518f4-v1-1-753bf3258292@proton.me/ (local) [2] https://lore.kernel.org/netdev/b3fea2ca-25ff-42c0-812c-f8cc6bb6667e@linux.ibm.com/ (local) --- Bryam Vargas (2): net/iucv: clear hs_dev before dropping its reference net/iucv: do not count the SHT frame against the receive window net/iucv/af_iucv.c | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) --- base-commit: f4377bf85887f57b59abb5479f7660a81ffe4449 change-id: 20261022-b4-disp-b35a9153-ad04dc76713a Best regards, -- bryamzxz [off-list ref]