Page MenuHomeFreeBSD

Fix LOR
ClosedPublic

Authored by tuexen on Sep 12 2021, 5:37 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Mar 1, 9:22 PM
Unknown Object (File)
Mon, Feb 10, 4:17 PM
Unknown Object (File)
Feb 3 2025, 11:28 PM
Unknown Object (File)
Jan 31 2025, 8:19 AM
Unknown Object (File)
Jan 24 2025, 7:16 PM
Unknown Object (File)
Jan 20 2025, 10:05 PM
Unknown Object (File)
Jan 18 2025, 5:53 PM
Unknown Object (File)
Jan 13 2025, 1:27 AM

Details

Summary

Don't try to lock the inp-info lock while holding an stcb lock (and don't lock twice...)

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

How was it getting locked twice?

How was it getting locked twice?

Because

SCTP_INP_INFO_RLOCK();
new_vtag = sctp_select_a_tag(stcb->sctp_ep, stcb->sctp_ep->sctp_lport, stcb->rport, 1);
SCTP_INP_INFO_RLOCK();

should have been

SCTP_INP_INFO_RLOCK();
new_vtag = sctp_select_a_tag(stcb->sctp_ep, stcb->sctp_ep->sctp_lport, stcb->rport, 1);
SCTP_INP_INFO_RUNLOCK();

(the difference is in the last line).

This revision is now accepted and ready to land.Sep 12 2021, 7:10 PM
This revision was automatically updated to reflect the committed changes.

How was it getting locked twice?

Because

SCTP_INP_INFO_RLOCK();
new_vtag = sctp_select_a_tag(stcb->sctp_ep, stcb->sctp_ep->sctp_lport, stcb->rport, 1);
SCTP_INP_INFO_RLOCK();

should have been

SCTP_INP_INFO_RLOCK();
new_vtag = sctp_select_a_tag(stcb->sctp_ep, stcb->sctp_ep->sctp_lport, stcb->rport, 1);
SCTP_INP_INFO_RUNLOCK();

(the difference is in the last line).

Oops, thanks.