• David Ward's avatar
    net/garp: avoid infinite loop if attribute already exists · 67378563
    David Ward authored
    An infinite loop occurred if garp_attr_create was called with the values
    of an existing attribute. This might happen if a previous leave request
    for the attribute has not yet been followed by a PDU transmission (or,
    if the application previously issued a join request for the attribute
    and is now issuing another one, without having issued a leave request).
    
    If garp_attr_create finds an existing attribute having the same values,
    return the address to it. Its state will then get updated (i.e., if it
    was in a leaving state, it will move into a non-leaving state and not
    get deleted during the next PDU transmission).
    
    To accomplish this fix, collapse garp_attr_insert into garp_attr_create
    (which is its only caller).
    
    Thanks to Jorge Boncompte [DTI2] <jorge@dti2.net> for contributing to
    this fix.
    Signed-off-by: default avatarDavid Ward <david.ward@ll.mit.edu>
    Acked-by: default avatarJorge Boncompte [DTI2] <jorge@dti2.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    67378563
garp.c 17.7 KB