diff options
author | David Ward <david.ward@ll.mit.edu> | 2012-03-27 11:01:52 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-04-01 22:47:11 +0200 |
commit | 67378563df2e168d32a4054616f244a91aec462d (patch) | |
tree | ef7a14168f63eedbdcfdc0f3345d48dc21cbd352 /virt | |
parent | Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linvil... (diff) | |
download | linux-67378563df2e168d32a4054616f244a91aec462d.tar.xz 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 'virt')
0 files changed, 0 insertions, 0 deletions