net/smc: Avoid overwriting the copies of clcsock callback functions
mainline inclusion from mainline-v5.17-rc5 commit 1de9770d category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I76JHC CVE: NA Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/net/smc?id=1de9770d121ee9294794cca0e0be8fbfa0134ee8 -------------------------------- The callback functions of clcsock will be saved and replaced during the fallback. But if the fallback happens more than once, then the copies of these callback functions will be overwritten incorrectly, resulting in a loop call issue: clcsk->sk_error_report |- smc_fback_error_report() <------------------------------| |- smc_fback_forward_wakeup() | (loop) |- clcsock_callback() (incorrectly overwritten) | |- smc->clcsk_error_report() ------------------| So this patch fixes the issue by saving these function pointers only once in the fallback and avoiding overwriting. Reported-by:<syzbot+4de3c0e8a263e1e499bc@syzkaller.appspotmail.com> Fixes: 341adeec ("net/smc: Forward wakeup to smc socket waitqueue after fallback") Link: https://lore.kernel.org/r/0000000000006d045e05d78776f6@google.com Signed-off-by:
Wen Gu <guwen@linux.alibaba.com> Signed-off-by:
David S. Miller <davem@davemloft.net> Signed-off-by:
Litao Jiao <jiaolitao@sangfor.com.cn>
Loading
Please sign in to comment