Hi Shannon,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on ipsec-next/master]

url:    
https://github.com/0day-ci/linux/commits/Shannon-Nelson/xfrm-check-for-xdo_dev_state_free/20171217-022754
base:   https://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next.git 
master
config: i386-randconfig-x004-201751 (attached as .config)
compiler: gcc-7 (Debian 7.2.0-12) 7.2.1 20171025
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   In file included from include/linux/kernel.h:10:0,
                    from include/linux/list.h:9,
                    from include/linux/module.h:9,
                    from net/xfrm/xfrm_device.c:16:
   net/xfrm/xfrm_device.c: In function 'xfrm_dev_feat_change':
>> net/xfrm/xfrm_device.c:172:48: error: 'struct net_device' has no member 
>> named 'xfrmdev_ops'; did you mean 'netdev_ops'?
     if ((dev->features & NETIF_F_HW_ESP) && !dev->xfrmdev_ops)
                                                   ^
   include/linux/compiler.h:58:30: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^~~~
   net/xfrm/xfrm_device.c:172:2: note: in expansion of macro 'if'
     if ((dev->features & NETIF_F_HW_ESP) && !dev->xfrmdev_ops)
     ^~
>> net/xfrm/xfrm_device.c:172:48: error: 'struct net_device' has no member 
>> named 'xfrmdev_ops'; did you mean 'netdev_ops'?
     if ((dev->features & NETIF_F_HW_ESP) && !dev->xfrmdev_ops)
                                                   ^
   include/linux/compiler.h:58:42: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                             ^~~~
   net/xfrm/xfrm_device.c:172:2: note: in expansion of macro 'if'
     if ((dev->features & NETIF_F_HW_ESP) && !dev->xfrmdev_ops)
     ^~
>> net/xfrm/xfrm_device.c:172:48: error: 'struct net_device' has no member 
>> named 'xfrmdev_ops'; did you mean 'netdev_ops'?
     if ((dev->features & NETIF_F_HW_ESP) && !dev->xfrmdev_ops)
                                                   ^
   include/linux/compiler.h:69:16: note: in definition of macro '__trace_if'
      ______r = !!(cond);     \
                   ^~~~
   net/xfrm/xfrm_device.c:172:2: note: in expansion of macro 'if'
     if ((dev->features & NETIF_F_HW_ESP) && !dev->xfrmdev_ops)
     ^~
   net/xfrm/xfrm_device.c:175:8: error: 'struct net_device' has no member named 
'xfrmdev_ops'; did you mean 'netdev_ops'?
      dev->xfrmdev_ops = NULL;
           ^~~~~~~~~~~
           netdev_ops
   In file included from include/linux/kernel.h:10:0,
                    from include/linux/list.h:9,
                    from include/linux/module.h:9,
                    from net/xfrm/xfrm_device.c:16:
   net/xfrm/xfrm_device.c: At top level:
   include/linux/compiler.h:64:4: warning: '______f' is static but declared in 
inline function 'strcpy' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:422:2: note: in expansion of macro 'if'
     if (p_size == (size_t)-1 && q_size == (size_t)-1)
     ^~
   include/linux/compiler.h:64:4: warning: '______f' is static but declared in 
inline function 'kmemdup' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:412:2: note: in expansion of macro 'if'
     if (p_size < size)
     ^~
   include/linux/compiler.h:64:4: warning: '______f' is static but declared in 
inline function 'kmemdup' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:410:2: note: in expansion of macro 'if'
     if (__builtin_constant_p(size) && p_size < size)
     ^~
   include/linux/compiler.h:64:4: warning: '______f' is static but declared in 
inline function 'memchr_inv' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:401:2: note: in expansion of macro 'if'
     if (p_size < size)
     ^~
   include/linux/compiler.h:64:4: warning: '______f' is static but declared in 
inline function 'memchr_inv' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:399:2: note: in expansion of macro 'if'
     if (__builtin_constant_p(size) && p_size < size)
     ^~
   include/linux/compiler.h:64:4: warning: '______f' is static but declared in 
inline function 'memchr' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:390:2: note: in expansion of macro 'if'
     if (p_size < size)
     ^~
   include/linux/compiler.h:64:4: warning: '______f' is static but declared in 
inline function 'memchr' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:388:2: note: in expansion of macro 'if'
     if (__builtin_constant_p(size) && p_size < size)
     ^~
   include/linux/compiler.h:64:4: warning: '______f' is static but declared in 
inline function 'memcmp' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:380:2: note: in expansion of macro 'if'
     if (p_size < size || q_size < size)
     ^~
   include/linux/compiler.h:64:4: warning: '______f' is static but declared in 
inline function 'memcmp' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:56:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:377:3: note: in expansion of macro 'if'
      if (q_size < size)
      ^~
   include/linux/compiler.h:64:4: warning: '______f' is static but declared in 
inline function 'memcmp' which is not static
       ______f = {     \

vim +172 net/xfrm/xfrm_device.c

21f42cc9 Steffen Klassert 2017-04-14  @16  #include <linux/module.h>
21f42cc9 Steffen Klassert 2017-04-14   17  #include <linux/netdevice.h>
21f42cc9 Steffen Klassert 2017-04-14   18  #include <linux/skbuff.h>
21f42cc9 Steffen Klassert 2017-04-14   19  #include <linux/slab.h>
21f42cc9 Steffen Klassert 2017-04-14   20  #include <linux/spinlock.h>
21f42cc9 Steffen Klassert 2017-04-14   21  #include <net/dst.h>
21f42cc9 Steffen Klassert 2017-04-14   22  #include <net/xfrm.h>
21f42cc9 Steffen Klassert 2017-04-14   23  #include <linux/notifier.h>
21f42cc9 Steffen Klassert 2017-04-14   24  
b81f884a Hangbin Liu      2017-06-01   25  #ifdef CONFIG_XFRM_OFFLOAD
f6e27114 Steffen Klassert 2017-04-14   26  int validate_xmit_xfrm(struct 
sk_buff *skb, netdev_features_t features)
f6e27114 Steffen Klassert 2017-04-14   27  {
f6e27114 Steffen Klassert 2017-04-14   28       int err;
f6e27114 Steffen Klassert 2017-04-14   29       struct xfrm_state *x;
f6e27114 Steffen Klassert 2017-04-14   30       struct xfrm_offload *xo = 
xfrm_offload(skb);
f6e27114 Steffen Klassert 2017-04-14   31  
f6e27114 Steffen Klassert 2017-04-14   32       if (skb_is_gso(skb))
f6e27114 Steffen Klassert 2017-04-14   33               return 0;
f6e27114 Steffen Klassert 2017-04-14   34  
f6e27114 Steffen Klassert 2017-04-14   35       if (xo) {
f6e27114 Steffen Klassert 2017-04-14   36               x = 
skb->sp->xvec[skb->sp->len - 1];
f6e27114 Steffen Klassert 2017-04-14   37               if (xo->flags & 
XFRM_GRO || x->xso.flags & XFRM_OFFLOAD_INBOUND)
f6e27114 Steffen Klassert 2017-04-14   38                       return 0;
f6e27114 Steffen Klassert 2017-04-14   39  
f6e27114 Steffen Klassert 2017-04-14   40               x->outer_mode->xmit(x, 
skb);
f6e27114 Steffen Klassert 2017-04-14   41  
f6e27114 Steffen Klassert 2017-04-14   42               err = 
x->type_offload->xmit(x, skb, features);
f6e27114 Steffen Klassert 2017-04-14   43               if (err) {
f6e27114 Steffen Klassert 2017-04-14   44                       
XFRM_INC_STATS(xs_net(x), LINUX_MIB_XFRMOUTSTATEPROTOERROR);
f6e27114 Steffen Klassert 2017-04-14   45                       return err;
f6e27114 Steffen Klassert 2017-04-14   46               }
f6e27114 Steffen Klassert 2017-04-14   47  
f6e27114 Steffen Klassert 2017-04-14   48               skb_push(skb, skb->data 
- skb_mac_header(skb));
f6e27114 Steffen Klassert 2017-04-14   49       }
f6e27114 Steffen Klassert 2017-04-14   50  
f6e27114 Steffen Klassert 2017-04-14   51       return 0;
f6e27114 Steffen Klassert 2017-04-14   52  }
f6e27114 Steffen Klassert 2017-04-14   53  
EXPORT_SYMBOL_GPL(validate_xmit_xfrm);
f6e27114 Steffen Klassert 2017-04-14   54  
d77e38e6 Steffen Klassert 2017-04-14   55  int xfrm_dev_state_add(struct net 
*net, struct xfrm_state *x,
d77e38e6 Steffen Klassert 2017-04-14   56                      struct 
xfrm_user_offload *xuo)
d77e38e6 Steffen Klassert 2017-04-14   57  {
d77e38e6 Steffen Klassert 2017-04-14   58       int err;
d77e38e6 Steffen Klassert 2017-04-14   59       struct dst_entry *dst;
d77e38e6 Steffen Klassert 2017-04-14   60       struct net_device *dev;
d77e38e6 Steffen Klassert 2017-04-14   61       struct xfrm_state_offload *xso 
= &x->xso;
d77e38e6 Steffen Klassert 2017-04-14   62       xfrm_address_t *saddr;
d77e38e6 Steffen Klassert 2017-04-14   63       xfrm_address_t *daddr;
d77e38e6 Steffen Klassert 2017-04-14   64  
d77e38e6 Steffen Klassert 2017-04-14   65       if (!x->type_offload)
ffdb5211 Ilan Tayari      2017-08-01   66               return -EINVAL;
d77e38e6 Steffen Klassert 2017-04-14   67  
d77e38e6 Steffen Klassert 2017-04-14   68       /* We don't yet support UDP 
encapsulation, TFC padding and ESN. */
d77e38e6 Steffen Klassert 2017-04-14   69       if (x->encap || x->tfcpad || 
(x->props.flags & XFRM_STATE_ESN))
43024b9c Yossef Efraim    2017-11-28   70               return -EINVAL;
d77e38e6 Steffen Klassert 2017-04-14   71  
d77e38e6 Steffen Klassert 2017-04-14   72       dev = dev_get_by_index(net, 
xuo->ifindex);
d77e38e6 Steffen Klassert 2017-04-14   73       if (!dev) {
d77e38e6 Steffen Klassert 2017-04-14   74               if (!(xuo->flags & 
XFRM_OFFLOAD_INBOUND)) {
d77e38e6 Steffen Klassert 2017-04-14   75                       saddr = 
&x->props.saddr;
d77e38e6 Steffen Klassert 2017-04-14   76                       daddr = 
&x->id.daddr;
d77e38e6 Steffen Klassert 2017-04-14   77               } else {
d77e38e6 Steffen Klassert 2017-04-14   78                       saddr = 
&x->id.daddr;
d77e38e6 Steffen Klassert 2017-04-14   79                       daddr = 
&x->props.saddr;
d77e38e6 Steffen Klassert 2017-04-14   80               }
d77e38e6 Steffen Klassert 2017-04-14   81  
077fbac4 Lorenzo Colitti  2017-08-11   82               dst = 
__xfrm_dst_lookup(net, 0, 0, saddr, daddr,
077fbac4 Lorenzo Colitti  2017-08-11   83                                       
x->props.family, x->props.output_mark);
d77e38e6 Steffen Klassert 2017-04-14   84               if (IS_ERR(dst))
d77e38e6 Steffen Klassert 2017-04-14   85                       return 0;
d77e38e6 Steffen Klassert 2017-04-14   86  
d77e38e6 Steffen Klassert 2017-04-14   87               dev = dst->dev;
d77e38e6 Steffen Klassert 2017-04-14   88  
d77e38e6 Steffen Klassert 2017-04-14   89               dev_hold(dev);
d77e38e6 Steffen Klassert 2017-04-14   90               dst_release(dst);
d77e38e6 Steffen Klassert 2017-04-14   91       }
d77e38e6 Steffen Klassert 2017-04-14   92  
d77e38e6 Steffen Klassert 2017-04-14   93       if (!dev->xfrmdev_ops || 
!dev->xfrmdev_ops->xdo_dev_state_add) {
67a63387 Steffen Klassert 2017-09-04   94               xso->dev = NULL;
d77e38e6 Steffen Klassert 2017-04-14   95               dev_put(dev);
d77e38e6 Steffen Klassert 2017-04-14   96               return 0;
d77e38e6 Steffen Klassert 2017-04-14   97       }
d77e38e6 Steffen Klassert 2017-04-14   98  
d77e38e6 Steffen Klassert 2017-04-14   99       xso->dev = dev;
d77e38e6 Steffen Klassert 2017-04-14  100       xso->num_exthdrs = 1;
d77e38e6 Steffen Klassert 2017-04-14  101       xso->flags = xuo->flags;
d77e38e6 Steffen Klassert 2017-04-14  102  
d77e38e6 Steffen Klassert 2017-04-14  103       err = 
dev->xfrmdev_ops->xdo_dev_state_add(x);
d77e38e6 Steffen Klassert 2017-04-14  104       if (err) {
d77e38e6 Steffen Klassert 2017-04-14  105               dev_put(dev);
d77e38e6 Steffen Klassert 2017-04-14  106               return err;
d77e38e6 Steffen Klassert 2017-04-14  107       }
d77e38e6 Steffen Klassert 2017-04-14  108  
d77e38e6 Steffen Klassert 2017-04-14  109       return 0;
d77e38e6 Steffen Klassert 2017-04-14  110  }
d77e38e6 Steffen Klassert 2017-04-14  111  
EXPORT_SYMBOL_GPL(xfrm_dev_state_add);
d77e38e6 Steffen Klassert 2017-04-14  112  
d77e38e6 Steffen Klassert 2017-04-14  113  bool xfrm_dev_offload_ok(struct 
sk_buff *skb, struct xfrm_state *x)
d77e38e6 Steffen Klassert 2017-04-14  114  {
d77e38e6 Steffen Klassert 2017-04-14  115       int mtu;
d77e38e6 Steffen Klassert 2017-04-14  116       struct dst_entry *dst = 
skb_dst(skb);
d77e38e6 Steffen Klassert 2017-04-14  117       struct xfrm_dst *xdst = (struct 
xfrm_dst *)dst;
d77e38e6 Steffen Klassert 2017-04-14  118       struct net_device *dev = 
x->xso.dev;
d77e38e6 Steffen Klassert 2017-04-14  119  
d77e38e6 Steffen Klassert 2017-04-14  120       if (!x->type_offload || 
x->encap)
d77e38e6 Steffen Klassert 2017-04-14  121               return false;
d77e38e6 Steffen Klassert 2017-04-14  122  
d77e38e6 Steffen Klassert 2017-04-14  123       if ((x->xso.offload_handle && 
(dev == dst->path->dev)) &&
d77e38e6 Steffen Klassert 2017-04-14  124            !dst->child->xfrm && 
x->type->get_mtu) {
d77e38e6 Steffen Klassert 2017-04-14  125               mtu = 
x->type->get_mtu(x, xdst->child_mtu_cached);
d77e38e6 Steffen Klassert 2017-04-14  126  
d77e38e6 Steffen Klassert 2017-04-14  127               if (skb->len <= mtu)
d77e38e6 Steffen Klassert 2017-04-14  128                       goto ok;
d77e38e6 Steffen Klassert 2017-04-14  129  
d77e38e6 Steffen Klassert 2017-04-14  130               if (skb_is_gso(skb) && 
skb_gso_validate_mtu(skb, mtu))
d77e38e6 Steffen Klassert 2017-04-14  131                       goto ok;
d77e38e6 Steffen Klassert 2017-04-14  132       }
d77e38e6 Steffen Klassert 2017-04-14  133  
d77e38e6 Steffen Klassert 2017-04-14  134       return false;
d77e38e6 Steffen Klassert 2017-04-14  135  
d77e38e6 Steffen Klassert 2017-04-14  136  ok:
d77e38e6 Steffen Klassert 2017-04-14  137       if (dev && dev->xfrmdev_ops && 
dev->xfrmdev_ops->xdo_dev_offload_ok)
d77e38e6 Steffen Klassert 2017-04-14  138               return 
x->xso.dev->xfrmdev_ops->xdo_dev_offload_ok(skb, x);
d77e38e6 Steffen Klassert 2017-04-14  139  
d77e38e6 Steffen Klassert 2017-04-14  140       return true;
d77e38e6 Steffen Klassert 2017-04-14  141  }
d77e38e6 Steffen Klassert 2017-04-14  142  
EXPORT_SYMBOL_GPL(xfrm_dev_offload_ok);
b81f884a Hangbin Liu      2017-06-01  143  #endif
d77e38e6 Steffen Klassert 2017-04-14  144  
24d472e4 Wei Yongjun      2017-05-18  145  static int xfrm_dev_register(struct 
net_device *dev)
d77e38e6 Steffen Klassert 2017-04-14  146  {
d8cb41eb Shannon Nelson   2017-12-14  147       if (!(dev->features & 
NETIF_F_HW_ESP)) {
d8cb41eb Shannon Nelson   2017-12-14  148               if (dev->features & 
NETIF_F_HW_ESP_TX_CSUM)
d77e38e6 Steffen Klassert 2017-04-14  149                       return 
NOTIFY_BAD;
d8cb41eb Shannon Nelson   2017-12-14  150               else
d8cb41eb Shannon Nelson   2017-12-14  151                       return 
NOTIFY_DONE;
d8cb41eb Shannon Nelson   2017-12-14  152       }
d8cb41eb Shannon Nelson   2017-12-14  153  
d8cb41eb Shannon Nelson   2017-12-14  154  #ifdef CONFIG_XFRM_OFFLOAD
d8cb41eb Shannon Nelson   2017-12-14  155       if (!(dev->xfrmdev_ops &&
d8cb41eb Shannon Nelson   2017-12-14  156             
dev->xfrmdev_ops->xdo_dev_state_add &&
d8cb41eb Shannon Nelson   2017-12-14  157             
dev->xfrmdev_ops->xdo_dev_state_delete))
d77e38e6 Steffen Klassert 2017-04-14  158               return NOTIFY_BAD;
d8cb41eb Shannon Nelson   2017-12-14  159  #endif
d77e38e6 Steffen Klassert 2017-04-14  160  
d77e38e6 Steffen Klassert 2017-04-14  161       return NOTIFY_DONE;
d77e38e6 Steffen Klassert 2017-04-14  162  }
d77e38e6 Steffen Klassert 2017-04-14  163  
d77e38e6 Steffen Klassert 2017-04-14  164  static int 
xfrm_dev_unregister(struct net_device *dev)
d77e38e6 Steffen Klassert 2017-04-14  165  {
ec30d78c Florian Westphal 2017-07-17  166       xfrm_policy_cache_flush();
d77e38e6 Steffen Klassert 2017-04-14  167       return NOTIFY_DONE;
d77e38e6 Steffen Klassert 2017-04-14  168  }
d77e38e6 Steffen Klassert 2017-04-14  169  
d77e38e6 Steffen Klassert 2017-04-14  170  static int 
xfrm_dev_feat_change(struct net_device *dev)
d77e38e6 Steffen Klassert 2017-04-14  171  {
d77e38e6 Steffen Klassert 2017-04-14 @172       if ((dev->features & 
NETIF_F_HW_ESP) && !dev->xfrmdev_ops)
d77e38e6 Steffen Klassert 2017-04-14  173               return NOTIFY_BAD;
d77e38e6 Steffen Klassert 2017-04-14  174       else if (!(dev->features & 
NETIF_F_HW_ESP))
d77e38e6 Steffen Klassert 2017-04-14  175               dev->xfrmdev_ops = NULL;
d77e38e6 Steffen Klassert 2017-04-14  176  
d77e38e6 Steffen Klassert 2017-04-14  177       if ((dev->features & 
NETIF_F_HW_ESP_TX_CSUM) &&
d77e38e6 Steffen Klassert 2017-04-14  178           !(dev->features & 
NETIF_F_HW_ESP))
d77e38e6 Steffen Klassert 2017-04-14  179               return NOTIFY_BAD;
d77e38e6 Steffen Klassert 2017-04-14  180  
d77e38e6 Steffen Klassert 2017-04-14  181       return NOTIFY_DONE;
d77e38e6 Steffen Klassert 2017-04-14  182  }
d77e38e6 Steffen Klassert 2017-04-14  183  

:::::: The code at line 172 was first introduced by commit
:::::: d77e38e612a017480157fe6d2c1422f42cb5b7e3 xfrm: Add an IPsec hardware 
offloading API

:::::: TO: Steffen Klassert <steffen.klass...@secunet.com>
:::::: CC: Steffen Klassert <steffen.klass...@secunet.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to