summaryrefslogtreecommitdiffstats
path: root/bin/sh
diff options
context:
space:
mode:
authorzec <zec@FreeBSD.org>2009-08-28 22:30:55 +0000
committerzec <zec@FreeBSD.org>2009-08-28 22:30:55 +0000
commit9940277b0b89316256a4ba3df75a0b17de8b7157 (patch)
tree2bf95bbc3a45eda300604eead9e0e66de186639f /bin/sh
parent7b069e86c6dbd397d4d622acf8c924f2ade8127d (diff)
downloadFreeBSD-src-9940277b0b89316256a4ba3df75a0b17de8b7157.zip
FreeBSD-src-9940277b0b89316256a4ba3df75a0b17de8b7157.tar.gz
Introduce a separate sx lock for protecting lists of vnet sysinit
and sysuninit handlers. Previously, sx_vnet, which is a lock designated for protecting the vnet list, was (ab)used for protecting vnet sysinit / sysuninit handler lists as well. Holding exclusively the sx_vnet lock while invoking sysinit and / or sysuninit handlers turned out to be problematic, since some of the handlers may attempt to wake up another thread and wait for it to walk over the vnet list, hence acquire a shared lock on sx_vnet, which in turn leads to a deadlock. Protecting vnet sysinit / sysuninit lists with a separate lock mitigates this issue, which was first observed with flowtable_flush() / flowtable_cleaner() in sys/net/flowtable.c. Reviewed by: rwatson, jhb MFC after: 3 days
Diffstat (limited to 'bin/sh')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud