Have ksocknal_launch_packet() report a 'struct lnet_processid'
with a large address.
Test-Parameters: trivial testlist=sanity-lnet
Test-Parameters: serverversion=2.12 serverdistro=el7.9 testlist=runtests
Test-Parameters: clientversion=2.12 testlist=runtests
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I6dd4b11e0361d893dea519287448028ca0a1ab97
Reviewed-on: https://review.whamcloud.com/44622
Reviewed-by: James Simmons <jsimmons@infradead.org>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Chris Horn <chris.horn@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
static int
ksocknal_get_peer_info(struct lnet_ni *ni, int index,
static int
ksocknal_get_peer_info(struct lnet_ni *ni, int index,
- struct lnet_process_id *id, __u32 *myip, __u32 *peer_ip,
+ struct lnet_processid *id, __u32 *myip, __u32 *peer_ip,
int *port, int *conn_count, int *share_count)
{
struct ksock_peer_ni *peer_ni;
int *port, int *conn_count, int *share_count)
{
struct ksock_peer_ni *peer_ni;
if (index-- > 0)
continue;
if (index-- > 0)
continue;
- id->pid = peer_ni->ksnp_id.pid;
- id->nid = lnet_nid_to_nid4(&peer_ni->ksnp_id.nid);
+ *id = peer_ni->ksnp_id;
*myip = 0;
*peer_ip = 0;
*port = 0;
*myip = 0;
*peer_ip = 0;
*port = 0;
if (index-- > 0)
continue;
if (index-- > 0)
continue;
- id->pid = peer_ni->ksnp_id.pid;
- id->nid = lnet_nid_to_nid4(&peer_ni->ksnp_id.nid);
+ *id = peer_ni->ksnp_id;
*myip = peer_ni->ksnp_passive_ips[j];
*peer_ip = 0;
*port = 0;
*myip = peer_ni->ksnp_passive_ips[j];
*peer_ip = 0;
*port = 0;
conn_cb = peer_ni->ksnp_conn_cb;
conn_cb = peer_ni->ksnp_conn_cb;
- id->pid = peer_ni->ksnp_id.pid;
- id->nid = lnet_nid_to_nid4(&peer_ni->ksnp_id.nid);
+ *id = peer_ni->ksnp_id;
if (conn_cb->ksnr_addr.ss_family == AF_INET) {
struct sockaddr_in *sa =
(void *)&conn_cb->ksnr_addr;
if (conn_cb->ksnr_addr.ss_family == AF_INET) {
struct sockaddr_in *sa =
(void *)&conn_cb->ksnr_addr;
int share_count = 0;
rc = ksocknal_get_peer_info(ni, data->ioc_count,
int share_count = 0;
rc = ksocknal_get_peer_info(ni, data->ioc_count,
- &id4, &myip, &ip, &port,
+ &id, &myip, &ip, &port,
&conn_count, &share_count);
if (rc != 0)
return rc;
&conn_count, &share_count);
if (rc != 0)
return rc;
-
- data->ioc_nid = id4.nid;
+ if (!nid_is_nid4(&id.nid))
+ return -EINVAL;
+ data->ioc_nid = lnet_nid_to_nid4(&id.nid);
data->ioc_count = share_count;
data->ioc_u32[0] = ip;
data->ioc_u32[1] = port;
data->ioc_u32[2] = myip;
data->ioc_u32[3] = conn_count;
data->ioc_count = share_count;
data->ioc_u32[0] = ip;
data->ioc_u32[1] = port;
data->ioc_u32[2] = myip;
data->ioc_u32[3] = conn_count;
- data->ioc_u32[4] = id4.pid;
+ data->ioc_u32[4] = id.pid;