Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net/smc: check for valid ib_client_data

In smc_ib_remove_dev() check if the provided ib device was actually
initialized for SMC before.

Reported-by: syzbot+84484ccebdd4e5451d91@syzkaller.appspotmail.com
Fixes: a4cf0443c414 ("smc: introduce SMC as an IB-client")
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Karsten Graul and committed by
David S. Miller
a2f2ef4a 474a31e1

+2
+2
net/smc/smc_ib.c
··· 573 573 struct smc_ib_device *smcibdev; 574 574 575 575 smcibdev = ib_get_client_data(ibdev, &smc_ib_client); 576 + if (!smcibdev || smcibdev->ibdev != ibdev) 577 + return; 576 578 ib_set_client_data(ibdev, &smc_ib_client, NULL); 577 579 spin_lock(&smc_ib_devices.lock); 578 580 list_del_init(&smcibdev->list); /* remove from smc_ib_devices */