Skip to content
  • Lawrence Stewart's avatar
    An sbuf configured with SBUF_AUTOEXTEND will call malloc with M_WAITOK when a · a66ac850
    Lawrence Stewart authored
    write to the buffer causes it to overflow. We therefore can't hold the CC list
    rwlock over a call to sbuf_printf() for an sbuf configured with SBUF_AUTOEXTEND.
    
    Switch to a fixed length sbuf which should be of sufficient size except in the
    very unlikely event that the sysctl is being processed as one or more new
    algorithms are loaded. If that happens, we accept the race and may fail the
    sysctl gracefully if there is insufficient room to print the names of all the
    algorithms.
    
    This should address a WITNESS warning and the potential panic that would occur
    if the sbuf call to malloc did sleep whilst holding the CC list rwlock.
    
    Sponsored by:	FreeBSD Foundation
    Reported by:	Nick Hibma
    Reviewed by:	bz
    MFC after:	3 weeks
    X-MFC with:	r215166
    a66ac850