• Chuck Lever's avatar
    net/handshake: Fix sock->file allocation · 18c40a1c
    Chuck Lever authored
    	sock->file = sock_alloc_file(sock, O_NONBLOCK, NULL);
    	^^^^                         ^^^^
    
    sock_alloc_file() calls release_sock() on error but the left hand
    side of the assignment dereferences "sock".  This isn't the bug and
    I didn't report this earlier because there is an assert that it
    doesn't fail.
    
    net/handshake/handshake-test.c:221 handshake_req_submit_test4() error: dereferencing freed memory 'sock'
    net/handshake/handshake-test.c:233 handshake_req_submit_test4() warn: 'req' was already freed.
    net/handshake/handshake-test.c:254 handshake_req_submit_test5() error: dereferencing freed memory 'sock'
    net/handshake/handshake-test.c:290 handshake_req_submit_test6() error: dereferencing freed memory 'sock'
    net/handshake/handshake-test.c:321 handshake_req_cancel_test1() error: dereferencing freed memory 'sock'
    net/handshake/handshake-test.c:355 handshake_req_cancel_test2() error: dereferencing freed memory 'sock'
    net/handshake/handshake-test.c:367 handshake_req_cancel_test2() warn: 'req' was already freed.
    net/handshake/handshake-test.c:395 handshake_req_cancel_test3() error: dereferencing freed memory 'sock'
    net/handshake/handshake-test.c:407 handshake_req_cancel_test3() warn: 'req' was already freed.
    net/handshake/handshake-test.c:451 handshake_req_destroy_test1() error: dereferencing freed memory 'sock'
    net/handshake/handshake-test.c:463 handshake_req_destroy_test1() warn: 'req' was already freed.
    Reported-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
    Fixes: 88232ec1 ("net/handshake: Add Kunit tests for the handshake consumer API")
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/168451609436.45209.15407022385441542980.stgit@oracle-102.nfsv4bat.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    18c40a1c
handshake-test.c 12.6 KB