Hi Emmanuel,
right, since it is checked for overflows, a misuse of this function
the other way round could end in a
mess, too. What do you think David?
2010年5月11日 Emmanuel Roullit <emmanuel@xxxxxxxxxxxxxxx>:
> Signed-off-by: Emmanuel Roullit <emmanuel@xxxxxxxxxxxxxxx>
>
> diff --git a/net/core/dev.c b/net/core/dev.c
> index f769098..f49dbde 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -3591,6 +3591,13 @@ static int __dev_set_promiscuity(struct net_device *dev, int inc)
>
> ASSERT_RTNL();
>
> + if (inc < 0 && -inc > dev->promiscuity) {
> + printk(KERN_WARNING "%s: promiscuity touches bottom, "
> + "set promiscuity failed, promiscuity feature "
> + "of device might be broken.\n", dev->name);
> + return -EOVERFLOW;
> + }
> +
> dev->flags |= IFF_PROMISC;
> dev->promiscuity += inc;
> if (dev->promiscuity == 0) {
Cheers,
Daniel
--
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html