diff options
author | David Ward <david.ward@ll.mit.edu> | 2012-03-27 09:01:52 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-04-01 16:47:11 -0400 |
commit | 67378563df2e168d32a4054616f244a91aec462d (patch) | |
tree | ef7a14168f63eedbdcfdc0f3345d48dc21cbd352 /kernel | |
parent | 54f5ffbf308828b588b9d1acd9a512d433be8a09 (diff) | |
download | linux-67378563df2e168d32a4054616f244a91aec462d.tar.gz linux-67378563df2e168d32a4054616f244a91aec462d.tar.bz2 linux-67378563df2e168d32a4054616f244a91aec462d.zip |
net/garp: avoid infinite loop if attribute already exists
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: David Ward <david.ward@ll.mit.edu>
Acked-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'kernel')
0 files changed, 0 insertions, 0 deletions