BCC: [email protected]
CC: [email protected]
CC: [email protected]
TO: David Howells <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   6879c2d3b96039ff1668b4328a4d0dd3ea952cff
commit: ac56a0b48da86fd1b4389632fb7c4c8a5d86eefa rxrpc: Fix ICMP/ICMP6 error 
handling
date:   2 weeks ago
:::::: branch date: 3 hours ago
:::::: commit date: 2 weeks ago
config: m68k-randconfig-m031-20220914 
(https://download.01.org/0day-ci/archive/20220917/[email protected]/config)
compiler: m68k-linux-gcc (GCC) 12.1.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
net/rxrpc/peer_event.c:265 rxrpc_encap_err_rcv() error: uninitialized symbol 
'err'.

vim +/err +265 net/rxrpc/peer_event.c

ac56a0b48da86f David Howells 2022-08-26  151  
ac56a0b48da86f David Howells 2022-08-26  152  /*
ac56a0b48da86f David Howells 2022-08-26  153   * Handle an error received on 
the local endpoint as a tunnel.
ac56a0b48da86f David Howells 2022-08-26  154   */
ac56a0b48da86f David Howells 2022-08-26  155  void rxrpc_encap_err_rcv(struct 
sock *sk, struct sk_buff *skb,
ac56a0b48da86f David Howells 2022-08-26  156                     unsigned int 
udp_offset)
ac56a0b48da86f David Howells 2022-08-26  157  {
ac56a0b48da86f David Howells 2022-08-26  158    struct sock_extended_err ee;
ac56a0b48da86f David Howells 2022-08-26  159    struct sockaddr_rxrpc srx;
ac56a0b48da86f David Howells 2022-08-26  160    struct rxrpc_local *local;
ac56a0b48da86f David Howells 2022-08-26  161    struct rxrpc_peer *peer;
ac56a0b48da86f David Howells 2022-08-26  162    unsigned int info = 0;
ac56a0b48da86f David Howells 2022-08-26  163    int err;
ac56a0b48da86f David Howells 2022-08-26  164    u8 version = 
ip_hdr(skb)->version;
ac56a0b48da86f David Howells 2022-08-26  165    u8 type = icmp_hdr(skb)->type;
ac56a0b48da86f David Howells 2022-08-26  166    u8 code = icmp_hdr(skb)->code;
ac56a0b48da86f David Howells 2022-08-26  167  
ac56a0b48da86f David Howells 2022-08-26  168    rcu_read_lock();
ac56a0b48da86f David Howells 2022-08-26  169    local = 
rcu_dereference_sk_user_data(sk);
ac56a0b48da86f David Howells 2022-08-26  170    if (unlikely(!local)) {
ac56a0b48da86f David Howells 2022-08-26  171            rcu_read_unlock();
ac56a0b48da86f David Howells 2022-08-26  172            return;
ac56a0b48da86f David Howells 2022-08-26  173    }
ac56a0b48da86f David Howells 2022-08-26  174  
ac56a0b48da86f David Howells 2022-08-26  175    rxrpc_new_skb(skb, 
rxrpc_skb_received);
ac56a0b48da86f David Howells 2022-08-26  176  
ac56a0b48da86f David Howells 2022-08-26  177    switch (ip_hdr(skb)->version) {
ac56a0b48da86f David Howells 2022-08-26  178    case IPVERSION:
ac56a0b48da86f David Howells 2022-08-26  179            peer = 
rxrpc_lookup_peer_icmp_rcu(local, skb, udp_offset,
ac56a0b48da86f David Howells 2022-08-26  180                                    
          &info, &srx);
ac56a0b48da86f David Howells 2022-08-26  181            break;
ac56a0b48da86f David Howells 2022-08-26  182  #ifdef CONFIG_AF_RXRPC_IPV6
ac56a0b48da86f David Howells 2022-08-26  183    case 6:
ac56a0b48da86f David Howells 2022-08-26  184            peer = 
rxrpc_lookup_peer_icmp6_rcu(local, skb, udp_offset,
ac56a0b48da86f David Howells 2022-08-26  185                                    
           &info, &srx);
ac56a0b48da86f David Howells 2022-08-26  186            break;
ac56a0b48da86f David Howells 2022-08-26  187  #endif
ac56a0b48da86f David Howells 2022-08-26  188    default:
ac56a0b48da86f David Howells 2022-08-26  189            rcu_read_unlock();
ac56a0b48da86f David Howells 2022-08-26  190            return;
ac56a0b48da86f David Howells 2022-08-26  191    }
ac56a0b48da86f David Howells 2022-08-26  192  
ac56a0b48da86f David Howells 2022-08-26  193    if (peer && 
!rxrpc_get_peer_maybe(peer))
ac56a0b48da86f David Howells 2022-08-26  194            peer = NULL;
ac56a0b48da86f David Howells 2022-08-26  195    if (!peer) {
ac56a0b48da86f David Howells 2022-08-26  196            rcu_read_unlock();
ac56a0b48da86f David Howells 2022-08-26  197            return;
ac56a0b48da86f David Howells 2022-08-26  198    }
ac56a0b48da86f David Howells 2022-08-26  199  
ac56a0b48da86f David Howells 2022-08-26  200    memset(&ee, 0, sizeof(ee));
ac56a0b48da86f David Howells 2022-08-26  201  
ac56a0b48da86f David Howells 2022-08-26  202    switch (version) {
ac56a0b48da86f David Howells 2022-08-26  203    case IPVERSION:
ac56a0b48da86f David Howells 2022-08-26  204            switch (type) {
ac56a0b48da86f David Howells 2022-08-26  205            case ICMP_DEST_UNREACH:
ac56a0b48da86f David Howells 2022-08-26  206                    switch (code) {
ac56a0b48da86f David Howells 2022-08-26  207                    case 
ICMP_FRAG_NEEDED:
ac56a0b48da86f David Howells 2022-08-26  208                            
rxrpc_adjust_mtu(peer, info);
ac56a0b48da86f David Howells 2022-08-26  209                            
rcu_read_unlock();
ac56a0b48da86f David Howells 2022-08-26  210                            
rxrpc_put_peer(peer);
ac56a0b48da86f David Howells 2022-08-26  211                            return;
ac56a0b48da86f David Howells 2022-08-26  212                    default:
ac56a0b48da86f David Howells 2022-08-26  213                            break;
ac56a0b48da86f David Howells 2022-08-26  214                    }
ac56a0b48da86f David Howells 2022-08-26  215  
ac56a0b48da86f David Howells 2022-08-26  216                    err = 
EHOSTUNREACH;
ac56a0b48da86f David Howells 2022-08-26  217                    if (code <= 
NR_ICMP_UNREACH) {
ac56a0b48da86f David Howells 2022-08-26  218                            /* 
Might want to do something different with
ac56a0b48da86f David Howells 2022-08-26  219                             * 
non-fatal errors
ac56a0b48da86f David Howells 2022-08-26  220                             */
ac56a0b48da86f David Howells 2022-08-26  221                            
//harderr = icmp_err_convert[code].fatal;
ac56a0b48da86f David Howells 2022-08-26  222                            err = 
icmp_err_convert[code].errno;
ac56a0b48da86f David Howells 2022-08-26  223                    }
ac56a0b48da86f David Howells 2022-08-26  224                    break;
ac56a0b48da86f David Howells 2022-08-26  225  
ac56a0b48da86f David Howells 2022-08-26  226            case ICMP_TIME_EXCEEDED:
ac56a0b48da86f David Howells 2022-08-26  227                    err = 
EHOSTUNREACH;
ac56a0b48da86f David Howells 2022-08-26  228                    break;
ac56a0b48da86f David Howells 2022-08-26  229            default:
ac56a0b48da86f David Howells 2022-08-26  230                    err = EPROTO;
ac56a0b48da86f David Howells 2022-08-26  231                    break;
ac56a0b48da86f David Howells 2022-08-26  232            }
ac56a0b48da86f David Howells 2022-08-26  233  
ac56a0b48da86f David Howells 2022-08-26  234            ee.ee_origin = 
SO_EE_ORIGIN_ICMP;
ac56a0b48da86f David Howells 2022-08-26  235            ee.ee_type = type;
ac56a0b48da86f David Howells 2022-08-26  236            ee.ee_code = code;
ac56a0b48da86f David Howells 2022-08-26  237            ee.ee_errno = err;
ac56a0b48da86f David Howells 2022-08-26  238            break;
ac56a0b48da86f David Howells 2022-08-26  239  
ac56a0b48da86f David Howells 2022-08-26  240  #ifdef CONFIG_AF_RXRPC_IPV6
ac56a0b48da86f David Howells 2022-08-26  241    case 6:
ac56a0b48da86f David Howells 2022-08-26  242            switch (type) {
ac56a0b48da86f David Howells 2022-08-26  243            case ICMPV6_PKT_TOOBIG:
ac56a0b48da86f David Howells 2022-08-26  244                    
rxrpc_adjust_mtu(peer, info);
ac56a0b48da86f David Howells 2022-08-26  245                    
rcu_read_unlock();
ac56a0b48da86f David Howells 2022-08-26  246                    
rxrpc_put_peer(peer);
ac56a0b48da86f David Howells 2022-08-26  247                    return;
ac56a0b48da86f David Howells 2022-08-26  248            }
ac56a0b48da86f David Howells 2022-08-26  249  
ac56a0b48da86f David Howells 2022-08-26  250            
icmpv6_err_convert(type, code, &err);
ac56a0b48da86f David Howells 2022-08-26  251  
ac56a0b48da86f David Howells 2022-08-26  252            if (err == EACCES)
ac56a0b48da86f David Howells 2022-08-26  253                    err = 
EHOSTUNREACH;
ac56a0b48da86f David Howells 2022-08-26  254  
ac56a0b48da86f David Howells 2022-08-26  255            ee.ee_origin = 
SO_EE_ORIGIN_ICMP6;
ac56a0b48da86f David Howells 2022-08-26  256            ee.ee_type = type;
ac56a0b48da86f David Howells 2022-08-26  257            ee.ee_code = code;
ac56a0b48da86f David Howells 2022-08-26  258            ee.ee_errno = err;
ac56a0b48da86f David Howells 2022-08-26  259            break;
ac56a0b48da86f David Howells 2022-08-26  260  #endif
ac56a0b48da86f David Howells 2022-08-26  261    }
ac56a0b48da86f David Howells 2022-08-26  262  
ac56a0b48da86f David Howells 2022-08-26  263    trace_rxrpc_rx_icmp(peer, &ee, 
&srx);
ac56a0b48da86f David Howells 2022-08-26  264  
ac56a0b48da86f David Howells 2022-08-26 @265    rxrpc_distribute_error(peer, 
err, RXRPC_CALL_NETWORK_ERROR);
ac56a0b48da86f David Howells 2022-08-26  266    rcu_read_unlock();
ac56a0b48da86f David Howells 2022-08-26  267    rxrpc_put_peer(peer);
ac56a0b48da86f David Howells 2022-08-26  268  }
ac56a0b48da86f David Howells 2022-08-26  269  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to