Fix LORs in in6?_leave_group()
r333175 updated the join_group functions, but not the leave_group ones. Reviewed by: sbruno Sponsored by: Limelight Networks Differential Revision: https://reviews.freebsd.org/D15393
This commit is contained in:
parent
0de8041c8e
commit
b69888c28f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=333505
@ -2501,6 +2501,8 @@ inp_leave_group(struct inpcb *inp, struct sockopt *sopt)
|
||||
/*
|
||||
* Begin state merge transaction at IGMP layer.
|
||||
*/
|
||||
in_pcbref(inp);
|
||||
INP_WUNLOCK(inp);
|
||||
IN_MULTI_LOCK();
|
||||
|
||||
if (is_final) {
|
||||
@ -2531,6 +2533,9 @@ inp_leave_group(struct inpcb *inp, struct sockopt *sopt)
|
||||
out_in_multi_locked:
|
||||
|
||||
IN_MULTI_UNLOCK();
|
||||
INP_WLOCK(inp);
|
||||
if (in_pcbrele_wlocked(inp))
|
||||
return (ENXIO);
|
||||
|
||||
if (error)
|
||||
imf_rollback(imf);
|
||||
|
@ -2381,6 +2381,8 @@ in6p_leave_group(struct inpcb *inp, struct sockopt *sopt)
|
||||
/*
|
||||
* Begin state merge transaction at MLD layer.
|
||||
*/
|
||||
in_pcbref(inp);
|
||||
INP_WUNLOCK(inp);
|
||||
IN6_MULTI_LOCK();
|
||||
|
||||
if (is_final) {
|
||||
@ -2407,6 +2409,9 @@ in6p_leave_group(struct inpcb *inp, struct sockopt *sopt)
|
||||
}
|
||||
|
||||
IN6_MULTI_UNLOCK();
|
||||
INP_WLOCK(inp);
|
||||
if (in_pcbrele_wlocked(inp))
|
||||
return (ENXIO);
|
||||
|
||||
if (error)
|
||||
im6f_rollback(imf);
|
||||
|
Loading…
Reference in New Issue
Block a user