HomeFreeBSD

atomic_fetchadd_int is used by mb_free_ext(), but it
rS162515Unpublished

Unpublished Commit ยท Learn More

No further details are available.

Description

atomic_fetchadd_int is used by mb_free_ext(), but it
returns the previous value that the "add" effected (In
this case we are adding -1), afterwhich we compare it
to '0'... to see if we free the mbuf... we should
be comparing it to '1'... Note that this only effects
when there is contention since there is a first part
to the comparison that checks to see if its '1'. So
this bug would only crop up if two CPU's are trying
to free the same mbuf refcount at the same time. This
will happen in SCTP but I doubt can happen in TCP or
UDP.
PR: N/A
Submitted by: rrs
Reviewed by: gnn,sam
Approved by: gnn,sam

Details

Provenance
rrsAuthored on
Parents
rS162514: Removed these from HEAD as well.
Branches
Unknown
Tags
Unknown

Event Timeline