# \[patch\] superfluous CAP\_NET\_ADMIN required for some ioctl

- From: Laurent Deniel \<hidden\>
- Date: 2005-02-01 20:49:14 
- List: netdev
- Page: https://ratatoskr.run/netdev/2005/02/10748823
- Thread: https://ratatoskr.run/netdev/2005/02/10748823/t.md

```text

Hi,

It should be possible to obtain bonding information with
SIOCBOND[SLAVE]INFOQUERY ioctls without root privilege
(like with /proc/net/bonding/bond? or ifconfig).

Laurent

Signed-off-by: Laurent Deniel <redacted>

--- linux-2.6.9.orig/net/core/dev.c     2005-01-08 17:29:55.000000000 +0100
+++ linux-2.6.9/net/core/dev.c  2005-01-08 18:00:01.000000000 +0100
@@ -2692,8 +2692,6 @@ int dev_ioctl(unsigned int cmd, void __u
                case SIOCBONDENSLAVE:
                case SIOCBONDRELEASE:
                case SIOCBONDSETHWADDR:
-               case SIOCBONDSLAVEINFOQUERY:
-               case SIOCBONDINFOQUERY:
                case SIOCBONDCHANGEACTIVE:
                case SIOCBRADDIF:
                case SIOCBRDELIF:
@@ -2705,6 +2703,20 @@ int dev_ioctl(unsigned int cmd, void __u
                        rtnl_unlock();
                        return ret;

+               /*
+                *      These ioctl calls:
+                *      - can be done by all.
+                *      - require strict serialization.
+                *      - return a value (but already copied to user)
+                */
+               case SIOCBONDSLAVEINFOQUERY:
+               case SIOCBONDINFOQUERY:
+                       dev_load(ifr.ifr_name);
+                       rtnl_lock();
+                       ret = dev_ifsioc(&ifr, cmd);
+                       rtnl_unlock();
+                       return ret;
+
                case SIOCGIFMEM:
                        /* Get the per device memory space. We can add this but
                         * currently do not support it */
```
