Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ceph: messenger: check prepare_write_connect() result

prepare_write_connect() can return an error, but only one of its
callers checks for it. All the rest are in functions that already
return errors, so it should be fine to return the error if one
gets returned.

Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>

authored by

Alex Elder and committed by
Alex Elder
5a0f8fdd e10c758e

+12 -4
+12 -4
net/ceph/messenger.c
··· 1409 1409 ceph_pr_addr(&con->peer_addr.in_addr)); 1410 1410 reset_connection(con); 1411 1411 ceph_con_out_kvec_reset(con); 1412 - prepare_write_connect(con); 1412 + ret = prepare_write_connect(con); 1413 + if (ret < 0) 1414 + return ret; 1413 1415 prepare_read_connect(con); 1414 1416 1415 1417 /* Tell ceph about it. */ ··· 1435 1433 le32_to_cpu(con->in_connect.connect_seq)); 1436 1434 con->connect_seq = le32_to_cpu(con->in_connect.connect_seq); 1437 1435 ceph_con_out_kvec_reset(con); 1438 - prepare_write_connect(con); 1436 + ret = prepare_write_connect(con); 1437 + if (ret < 0) 1438 + return ret; 1439 1439 prepare_read_connect(con); 1440 1440 break; 1441 1441 ··· 1452 1448 get_global_seq(con->msgr, 1453 1449 le32_to_cpu(con->in_connect.global_seq)); 1454 1450 ceph_con_out_kvec_reset(con); 1455 - prepare_write_connect(con); 1451 + ret = prepare_write_connect(con); 1452 + if (ret < 0) 1453 + return ret; 1456 1454 prepare_read_connect(con); 1457 1455 break; 1458 1456 ··· 1860 1854 if (con->sock == NULL) { 1861 1855 ceph_con_out_kvec_reset(con); 1862 1856 prepare_write_banner(con); 1863 - prepare_write_connect(con); 1857 + ret = prepare_write_connect(con); 1858 + if (ret < 0) 1859 + goto out; 1864 1860 prepare_read_banner(con); 1865 1861 set_bit(CONNECTING, &con->state); 1866 1862 clear_bit(NEGOTIATING, &con->state);