CC: [email protected]
CC: [email protected]
TO: Ursula Braun <[email protected]>
CC: Guvenc Gulce <[email protected]>
CC: Karsten Graul <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 
master
head:   5a6bd84f815485800699f55c78f690b2ed35f0c5
commit: a60a2b1e0af1a7517ba41689b39e9df90ef09041 [903/970] net/smc: reduce 
active tcp_listen workers
:::::: branch date: 9 hours ago
:::::: commit date: 2 days ago
config: i386-randconfig-m021-20200911 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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

smatch warnings:
net/smc/smc_close.c:214 smc_close_active() warn: variable dereferenced before 
check 'smc->clcsock' (see line 211)
net/smc/smc_close.c:214 smc_close_active() warn: variable dereferenced before 
check 'smc->clcsock->sk' (see line 211)

# 
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/commit/?id=a60a2b1e0af1a7517ba41689b39e9df90ef09041
git remote add net-next 
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
git fetch --no-tags net-next master
git checkout a60a2b1e0af1a7517ba41689b39e9df90ef09041
vim +214 net/smc/smc_close.c

a98bf8c0bce7bd3 Ursula Braun 2017-04-10  188  
b38d732477e4211 Ursula Braun 2017-01-09  189  int smc_close_active(struct 
smc_sock *smc)
b38d732477e4211 Ursula Braun 2017-01-09  190  {
b38d732477e4211 Ursula Braun 2017-01-09  191    struct smc_cdc_conn_state_flags 
*txflags =
b38d732477e4211 Ursula Braun 2017-01-09  192            
&smc->conn.local_tx_ctrl.conn_state_flags;
b38d732477e4211 Ursula Braun 2017-01-09  193    struct smc_connection *conn = 
&smc->conn;
b38d732477e4211 Ursula Braun 2017-01-09  194    struct sock *sk = &smc->sk;
b38d732477e4211 Ursula Braun 2017-01-09  195    int old_state;
8c96feeeb39ba0b Ursula Braun 2017-09-21  196    long timeout;
b38d732477e4211 Ursula Braun 2017-01-09  197    int rc = 0;
b38d732477e4211 Ursula Braun 2017-01-09  198  
8c96feeeb39ba0b Ursula Braun 2017-09-21  199    timeout = current->flags & 
PF_EXITING ?
8c96feeeb39ba0b Ursula Braun 2017-09-21  200              0 : sock_flag(sk, 
SOCK_LINGER) ?
8c96feeeb39ba0b Ursula Braun 2017-09-21  201                  sk->sk_lingertime 
: SMC_MAX_STREAM_WAIT_TIMEOUT;
b38d732477e4211 Ursula Braun 2017-01-09  202  
b38d732477e4211 Ursula Braun 2017-01-09  203    old_state = sk->sk_state;
bbb96bf2366e502 Ursula Braun 2018-01-24  204  again:
bbb96bf2366e502 Ursula Braun 2018-01-24  205    switch (sk->sk_state) {
b38d732477e4211 Ursula Braun 2017-01-09  206    case SMC_INIT:
b38d732477e4211 Ursula Braun 2017-01-09  207            sk->sk_state = 
SMC_CLOSED;
b38d732477e4211 Ursula Braun 2017-01-09  208            break;
b38d732477e4211 Ursula Braun 2017-01-09  209    case SMC_LISTEN:
b38d732477e4211 Ursula Braun 2017-01-09  210            sk->sk_state = 
SMC_CLOSED;
a60a2b1e0af1a75 Ursula Braun 2020-09-10 @211            
smc->clcsock->sk->sk_data_ready = smc->clcsk_data_ready;
a60a2b1e0af1a75 Ursula Braun 2020-09-10  212            
smc->clcsock->sk->sk_user_data = NULL;
b38d732477e4211 Ursula Braun 2017-01-09  213            
sk->sk_state_change(sk); /* wake up accept */
a60a2b1e0af1a75 Ursula Braun 2020-09-10 @214            if (smc->clcsock && 
smc->clcsock->sk)
b38d732477e4211 Ursula Braun 2017-01-09  215                    rc = 
kernel_sock_shutdown(smc->clcsock, SHUT_RDWR);
b38d732477e4211 Ursula Braun 2017-01-09  216            
smc_close_cleanup_listen(sk);
3d502067599f0db Ursula Braun 2018-03-13  217            release_sock(sk);
3d502067599f0db Ursula Braun 2018-03-13  218            
flush_work(&smc->tcp_listen_work);
3d502067599f0db Ursula Braun 2018-03-13  219            lock_sock(sk);
b38d732477e4211 Ursula Braun 2017-01-09  220            break;
b38d732477e4211 Ursula Braun 2017-01-09  221    case SMC_ACTIVE:
b38d732477e4211 Ursula Braun 2017-01-09  222            
smc_close_stream_wait(smc, timeout);
b38d732477e4211 Ursula Braun 2017-01-09  223            release_sock(sk);
18e537cd58e8d69 Ursula Braun 2017-09-21  224            
cancel_delayed_work_sync(&conn->tx_work);
b38d732477e4211 Ursula Braun 2017-01-09  225            lock_sock(sk);
b38d732477e4211 Ursula Braun 2017-01-09  226            if (sk->sk_state == 
SMC_ACTIVE) {
b38d732477e4211 Ursula Braun 2017-01-09  227                    /* send close 
request */
b38d732477e4211 Ursula Braun 2017-01-09  228                    rc = 
smc_close_final(conn);
b38d732477e4211 Ursula Braun 2017-01-09  229                    sk->sk_state = 
SMC_PEERCLOSEWAIT1;
b38d732477e4211 Ursula Braun 2017-01-09  230            } else {
b38d732477e4211 Ursula Braun 2017-01-09  231                    /* peer event 
has changed the state */
b38d732477e4211 Ursula Braun 2017-01-09  232                    goto again;
b38d732477e4211 Ursula Braun 2017-01-09  233            }
b38d732477e4211 Ursula Braun 2017-01-09  234            break;
b38d732477e4211 Ursula Braun 2017-01-09  235    case SMC_APPFINCLOSEWAIT:
b38d732477e4211 Ursula Braun 2017-01-09  236            /* socket already 
shutdown wr or both (active close) */
b38d732477e4211 Ursula Braun 2017-01-09  237            if 
(txflags->peer_done_writing &&
a98bf8c0bce7bd3 Ursula Braun 2017-04-10  238                
!smc_close_sent_any_close(conn)) {
b38d732477e4211 Ursula Braun 2017-01-09  239                    /* just 
shutdown wr done, send close request */
b38d732477e4211 Ursula Braun 2017-01-09  240                    rc = 
smc_close_final(conn);
b38d732477e4211 Ursula Braun 2017-01-09  241            }
b38d732477e4211 Ursula Braun 2017-01-09  242            sk->sk_state = 
SMC_CLOSED;
b38d732477e4211 Ursula Braun 2017-01-09  243            break;
b38d732477e4211 Ursula Braun 2017-01-09  244    case SMC_APPCLOSEWAIT1:
b38d732477e4211 Ursula Braun 2017-01-09  245    case SMC_APPCLOSEWAIT2:
b38d732477e4211 Ursula Braun 2017-01-09  246            if 
(!smc_cdc_rxed_any_close(conn))
b38d732477e4211 Ursula Braun 2017-01-09  247                    
smc_close_stream_wait(smc, timeout);
b38d732477e4211 Ursula Braun 2017-01-09  248            release_sock(sk);
18e537cd58e8d69 Ursula Braun 2017-09-21  249            
cancel_delayed_work_sync(&conn->tx_work);
b38d732477e4211 Ursula Braun 2017-01-09  250            lock_sock(sk);
bbb96bf2366e502 Ursula Braun 2018-01-24  251            if (sk->sk_state != 
SMC_APPCLOSEWAIT1 &&
bbb96bf2366e502 Ursula Braun 2018-01-24  252                sk->sk_state != 
SMC_APPCLOSEWAIT2)
bbb96bf2366e502 Ursula Braun 2018-01-24  253                    goto again;
b38d732477e4211 Ursula Braun 2017-01-09  254            /* confirm close from 
peer */
b38d732477e4211 Ursula Braun 2017-01-09  255            rc = 
smc_close_final(conn);
51f1de79ad8ed35 Ursula Braun 2018-01-26  256            if 
(smc_cdc_rxed_any_close(conn)) {
b38d732477e4211 Ursula Braun 2017-01-09  257                    /* peer has 
closed the socket already */
b38d732477e4211 Ursula Braun 2017-01-09  258                    sk->sk_state = 
SMC_CLOSED;
51f1de79ad8ed35 Ursula Braun 2018-01-26  259                    sock_put(sk); 
/* postponed passive closing */
51f1de79ad8ed35 Ursula Braun 2018-01-26  260            } else {
b38d732477e4211 Ursula Braun 2017-01-09  261                    /* peer has 
just issued a shutdown write */
b38d732477e4211 Ursula Braun 2017-01-09  262                    sk->sk_state = 
SMC_PEERFINCLOSEWAIT;
51f1de79ad8ed35 Ursula Braun 2018-01-26  263            }
b38d732477e4211 Ursula Braun 2017-01-09  264            break;
b38d732477e4211 Ursula Braun 2017-01-09  265    case SMC_PEERCLOSEWAIT1:
b38d732477e4211 Ursula Braun 2017-01-09  266    case SMC_PEERCLOSEWAIT2:
a98bf8c0bce7bd3 Ursula Braun 2017-04-10  267            if 
(txflags->peer_done_writing &&
a98bf8c0bce7bd3 Ursula Braun 2017-04-10  268                
!smc_close_sent_any_close(conn)) {
a98bf8c0bce7bd3 Ursula Braun 2017-04-10  269                    /* just 
shutdown wr done, send close request */
a98bf8c0bce7bd3 Ursula Braun 2017-04-10  270                    rc = 
smc_close_final(conn);
a98bf8c0bce7bd3 Ursula Braun 2017-04-10  271            }
a98bf8c0bce7bd3 Ursula Braun 2017-04-10  272            /* peer sending 
PeerConnectionClosed will cause transition */
a98bf8c0bce7bd3 Ursula Braun 2017-04-10  273            break;
b38d732477e4211 Ursula Braun 2017-01-09  274    case SMC_PEERFINCLOSEWAIT:
b38d732477e4211 Ursula Braun 2017-01-09  275            /* peer sending 
PeerConnectionClosed will cause transition */
b38d732477e4211 Ursula Braun 2017-01-09  276            break;
b38d732477e4211 Ursula Braun 2017-01-09  277    case SMC_PROCESSABORT:
d18963cf0365666 Ursula Braun 2019-10-09  278            rc = 
smc_close_abort(conn);
b38d732477e4211 Ursula Braun 2017-01-09  279            sk->sk_state = 
SMC_CLOSED;
b38d732477e4211 Ursula Braun 2017-01-09  280            break;
b38d732477e4211 Ursula Braun 2017-01-09  281    case SMC_PEERABORTWAIT:
d18963cf0365666 Ursula Braun 2019-10-09  282            sk->sk_state = 
SMC_CLOSED;
d18963cf0365666 Ursula Braun 2019-10-09  283            break;
b38d732477e4211 Ursula Braun 2017-01-09  284    case SMC_CLOSED:
b38d732477e4211 Ursula Braun 2017-01-09  285            /* nothing to do, add 
tracing in future patch */
b38d732477e4211 Ursula Braun 2017-01-09  286            break;
b38d732477e4211 Ursula Braun 2017-01-09  287    }
b38d732477e4211 Ursula Braun 2017-01-09  288  
b38d732477e4211 Ursula Braun 2017-01-09  289    if (old_state != sk->sk_state)
3163c5071f25e36 Ursula Braun 2018-01-24  290            sk->sk_state_change(sk);
b38d732477e4211 Ursula Braun 2017-01-09  291    return rc;
b38d732477e4211 Ursula Braun 2017-01-09  292  }
b38d732477e4211 Ursula Braun 2017-01-09  293  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to