Revision 7ff57e98fb78ad94edafbdc7435f2d745e9e6bb5 authored by Fabio M. De Francesco on 23 February 2022, 10:02:52 UTC, committed by Jakub Kicinski on 24 February 2022, 17:09:33 UTC
smc_pnetid_by_table_ib() uses read_lock() and then it calls smc_pnet_apply_ib()
which, in turn, calls mutex_lock(&smc_ib_devices.mutex).

read_lock() disables preemption. Therefore, the code acquires a mutex while in
atomic context and it leads to a SAC bug.

Fix this bug by replacing the rwlock with a mutex.

Reported-and-tested-by: syzbot+4f322a6d84e991c38775@syzkaller.appspotmail.com
Fixes: 64e28b52c7a6 ("net/smc: add pnet table namespace support")
Confirmed-by: Tony Lu <tonylu@linux.alibaba.com>
Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
Acked-by: Karsten Graul <kgraul@linux.ibm.com>
Link: https://lore.kernel.org/r/20220223100252.22562-1-fmdefrancesco@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent e13ad14
History
File Mode Size
netfilter
Kconfig -rw-r--r-- 2.6 KB
Makefile -rw-r--r-- 996 bytes
br.c -rw-r--r-- 10.3 KB
br_arp_nd_proxy.c -rw-r--r-- 11.4 KB
br_cfm.c -rw-r--r-- 20.4 KB
br_cfm_netlink.c -rw-r--r-- 20.7 KB
br_device.c -rw-r--r-- 12.6 KB
br_fdb.c -rw-r--r-- 32.7 KB
br_forward.c -rw-r--r-- 7.8 KB
br_if.c -rw-r--r-- 18.2 KB
br_input.c -rw-r--r-- 10.6 KB
br_ioctl.c -rw-r--r-- 9.4 KB
br_mdb.c -rw-r--r-- 28.1 KB
br_mrp.c -rw-r--r-- 32.1 KB
br_mrp_netlink.c -rw-r--r-- 15.9 KB
br_mrp_switchdev.c -rw-r--r-- 5.8 KB
br_multicast.c -rw-r--r-- 130.8 KB
br_multicast_eht.c -rw-r--r-- 21.9 KB
br_netfilter_hooks.c -rw-r--r-- 30.9 KB
br_netfilter_ipv6.c -rw-r--r-- 5.6 KB
br_netlink.c -rw-r--r-- 52.4 KB
br_netlink_tunnel.c -rw-r--r-- 7.9 KB
br_nf_core.c -rw-r--r-- 2.0 KB
br_private.h -rw-r--r-- 59.3 KB
br_private_cfm.h -rw-r--r-- 4.3 KB
br_private_mcast_eht.h -rw-r--r-- 2.5 KB
br_private_mrp.h -rw-r--r-- 4.3 KB
br_private_stp.h -rw-r--r-- 1.7 KB
br_private_tunnel.h -rw-r--r-- 2.3 KB
br_stp.c -rw-r--r-- 16.2 KB
br_stp_bpdu.c -rw-r--r-- 5.6 KB
br_stp_if.c -rw-r--r-- 8.4 KB
br_stp_timer.c -rw-r--r-- 4.2 KB
br_switchdev.c -rw-r--r-- 17.8 KB
br_sysfs_br.c -rw-r--r-- 29.5 KB
br_sysfs_if.c -rw-r--r-- 10.7 KB
br_vlan.c -rw-r--r-- 52.8 KB
br_vlan_options.c -rw-r--r-- 19.6 KB
br_vlan_tunnel.c -rw-r--r-- 4.8 KB

back to top