diff options
| author | Wang Chen <[email protected]> | 2008-06-18 08:48:28 +0000 |
|---|---|---|
| committer | David S. Miller <[email protected]> | 2008-06-18 08:48:28 +0000 |
| commit | dad9b335c6940de2746a9788eb456d09cf102f81 (patch) | |
| tree | c74092de70d7c2c9ba88bf580bc404133b55c490 /net/unix | |
| parent | ipv6: minor cleanup in net/ipv6/tcp_ipv6.c [RESEND ]. (diff) | |
| download | kernel-dad9b335c6940de2746a9788eb456d09cf102f81.tar.gz kernel-dad9b335c6940de2746a9788eb456d09cf102f81.zip | |
netdevice: Fix promiscuity and allmulti overflow
Max of promiscuity and allmulti plus positive @inc can cause overflow.
Fox example: when allmulti=0xFFFFFFFF, any caller give dev_set_allmulti() a
positive @inc will cause allmulti be off.
This is not what we want, though it's rare case.
The fix is that only negative @inc will cause allmulti or promiscuity be off
and when any caller makes the counters touch the roof, we return error.
Change of v2:
Change void function dev_set_promiscuity/allmulti to return int.
So callers can get the overflow error.
Caller's fix will be done later.
Change of v3:
1. Since we return error to caller, we don't need to print KERN_ERROR,
KERN_WARNING is enough.
2. In dev_set_promiscuity(), if __dev_set_promiscuity() failed, we
return at once.
Signed-off-by: Wang Chen <[email protected]>
Acked-by: Patrick McHardy <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Diffstat (limited to 'net/unix')
0 files changed, 0 insertions, 0 deletions
