mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 04:43:53 +00:00
sockets: on shutdown(2) do sorflush() only in case of generic sockbuf
This is a quick plug to fix panic with Netlink which has protocol specific buffers. Note that PF_UNIX/SOCK_DGRAM, which also has its own buffers, avoids the panic due to being SOCK_DGRAM. A correct but more complicated fix that needs to be done is to merge pr_shutdown, pr_flush and dom_dispose into one protocol method that may call sorflush for generic sockets or do their own stuff for protocol which has own buffers. Reviewed by: tuexen Differential Revision: https://reviews.freebsd.org/D43367 Reported-by: syzbot+a58e1615881c01a51653@syzkaller.appspotmail.com
This commit is contained in:
parent
af9f4ac57a
commit
59ce044a78
|
@ -3007,7 +3007,7 @@ soshutdown(struct socket *so, int how)
|
|||
pr = so->so_proto;
|
||||
if (pr->pr_flush != NULL)
|
||||
pr->pr_flush(so, how);
|
||||
if (how != SHUT_WR)
|
||||
if (how != SHUT_WR && !(pr->pr_flags & PR_SOCKBUF))
|
||||
sorflush(so);
|
||||
if (how != SHUT_RD) {
|
||||
error = pr->pr_shutdown(so);
|
||||
|
|
Loading…
Reference in a new issue