[bug report] forever loop in ksocknal_push()
Dan Carpenter
dan.carpenter at oracle.com
Sun Apr 27 18:26:13 UTC 2014
Hello Peng Tao,
The patch d7e09d0397e8: "staging: add Lustre file system client
support" from May 2, 2013, leads to the following static checker
warning:
drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c:1904 ksocknal_push()
info: ignoring unreachable code.
drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c
1904 for (i = 0; i < ksocknal_data.ksnd_peer_hash_size; i++) {
^^^
Not reached.
1905 for (j = 0; ; j++) {
^^^^^^^^^^^^
This loop is a forever loop. No break statements or exit conditions. I
don't know how to fix this.
1906 read_lock(&ksocknal_data.ksnd_global_lock);
1907
1908 index = 0;
1909 peer = NULL;
1910
1911 list_for_each (tmp, &ksocknal_data.ksnd_peers[i]) {
1912 peer = list_entry(tmp, ksock_peer_t,
1913 ksnp_list);
1914
1915 if (!((id.nid == LNET_NID_ANY ||
1916 id.nid == peer->ksnp_id.nid) &&
1917 (id.pid == LNET_PID_ANY ||
1918 id.pid == peer->ksnp_id.pid))) {
1919 peer = NULL;
1920 continue;
1921 }
1922
1923 if (index++ == j) {
1924 ksocknal_peer_addref(peer);
1925 break;
1926 }
1927 }
1928
1929 read_unlock(&ksocknal_data.ksnd_global_lock);
1930
1931 if (peer != NULL) {
1932 rc = 0;
1933 ksocknal_push_peer (peer);
1934 ksocknal_peer_decref(peer);
1935 }
1936 }
1937
1938 }
regards,
dan carpenter
More information about the devel
mailing list