Fixed a set of issues found while running static analysis.
Test-Parameters: trivial
Signed-off-by: Amir Shehata <amir.shehata@intel.com>
Change-Id: I22ddfdda86c979c7a300ab9df777efbdd5973ac5
Reviewed-on: https://review.whamcloud.com/26687
Tested-by: Jenkins
Reviewed-by: Olaf Weber <olaf@sgi.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Doug Oucharek <doug.s.oucharek@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
static int
lnet_add_prim_lpni(lnet_nid_t nid)
{
static int
lnet_add_prim_lpni(lnet_nid_t nid)
{
struct lnet_peer *peer;
struct lnet_peer_ni *lpni;
struct lnet_peer *peer;
struct lnet_peer_ni *lpni;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <libcfs/util/ioctl.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <libcfs/util/ioctl.h>
static int socket_intf_query(int request, char *intf,
struct ifreq *ifr)
{
static int socket_intf_query(int request, char *intf,
struct ifreq *ifr)
{
int sockfd;
if (strlen(intf) >= IFNAMSIZ || ifr == NULL)
int sockfd;
if (strlen(intf) >= IFNAMSIZ || ifr == NULL)
strcpy(ifr->ifr_name, intf);
rc = ioctl(sockfd, request, ifr);
if (rc != 0)
strcpy(ifr->ifr_name, intf);
rc = ioctl(sockfd, request, ifr);
if (rc != 0)
- return LUSTRE_CFG_RC_BAD_PARAM;
+ rc = LUSTRE_CFG_RC_BAD_PARAM;
+ close(sockfd);
+
+ return rc;
len = sizeof(struct lnet_ioctl_config_ni);
data = calloc(1, len);
len = sizeof(struct lnet_ioctl_config_ni);
data = calloc(1, len);
+ if (!data)
+ return LUSTRE_CFG_RC_OUT_OF_MEM;
conf = (struct lnet_ioctl_config_ni*) data;
if (i == 0 && tunables != NULL)
tun = (struct lnet_ioctl_config_lnd_tunables*)
conf = (struct lnet_ioctl_config_ni*) data;
if (i == 0 && tunables != NULL)
tun = (struct lnet_ioctl_config_lnd_tunables*)
snprintf(err_str,
LNET_MAX_STR_LEN,
"\"cannot add network: %s\"", strerror(errno));
snprintf(err_str,
LNET_MAX_STR_LEN,
"\"cannot add network: %s\"", strerror(errno));
+ /*
+ * call below function to resolve the rules into a list of nids.
+ * The memory is allocated in that function then freed here when
+ * it's no longer needed.
+ */
rc = lustre_lnet_resolve_ip2nets_rule(ip2nets, &nids, &nnids);
if (rc != LUSTRE_CFG_RC_NO_ERR && rc != LUSTRE_CFG_RC_MATCH) {
snprintf(err_str,
rc = lustre_lnet_resolve_ip2nets_rule(ip2nets, &nids, &nnids);
if (rc != LUSTRE_CFG_RC_NO_ERR && rc != LUSTRE_CFG_RC_MATCH) {
snprintf(err_str,
if (list_empty(&ip2nets->ip2nets_net.nw_intflist)) {
snprintf(err_str, sizeof(err_str),
"\"no interfaces match ip2nets rules\"");
if (list_empty(&ip2nets->ip2nets_net.nw_intflist)) {
snprintf(err_str, sizeof(err_str),
"\"no interfaces match ip2nets rules\"");
}
rc = lustre_lnet_ioctl_config_ni(&ip2nets->ip2nets_net.nw_intflist,
tunables, global_cpts, nids,
err_str);
}
rc = lustre_lnet_ioctl_config_ni(&ip2nets->ip2nets_net.nw_intflist,
tunables, global_cpts, nids,
err_str);
- if (rc != LUSTRE_CFG_RC_NO_ERR)
- free(nids);
+
+free_nids_out:
+ free(nids);
out:
cYAML_build_error(rc, seq_no, ADD_CMD, "ip2nets", err_str, err_rc);
out:
cYAML_build_error(rc, seq_no, ADD_CMD, "ip2nets", err_str, err_rc);
else
len = sizeof(struct lnet_ioctl_config_ni);
data = calloc(1, len);
else
len = sizeof(struct lnet_ioctl_config_ni);
data = calloc(1, len);
+ if (!data) {
+ rc = LUSTRE_CFG_RC_OUT_OF_MEM;
+ goto out;
+ }
conf = (struct lnet_ioctl_config_ni*) data;
if (tunables != NULL)
tun = (struct lnet_ioctl_config_lnd_tunables*)
conf = (struct lnet_ioctl_config_ni*) data;
if (tunables != NULL)
tun = (struct lnet_ioctl_config_lnd_tunables*)
- if (LNET_NETTYP(nw_descr->nw_id) == LOLND)
- return LUSTRE_CFG_RC_NO_ERR;
+ if (LNET_NETTYP(nw_descr->nw_id) == LOLND) {
+ rc = LUSTRE_CFG_RC_NO_ERR;
+ goto out;
+ }
if (nw_descr->nw_id == LNET_NIDNET(LNET_NID_ANY)) {
snprintf(err_str,
if (nw_descr->nw_id == LNET_NIDNET(LNET_NID_ANY)) {
snprintf(err_str,
__u32 nnids = 0;
struct lnet_dlc_intf_descr *intf_descr, *tmp;
__u32 nnids = 0;
struct lnet_dlc_intf_descr *intf_descr, *tmp;
- if (LNET_NETTYP(nw_descr->nw_id) == LOLND)
- return LUSTRE_CFG_RC_NO_ERR;
-
snprintf(err_str, sizeof(err_str), "\"success\"");
if (nw_descr == NULL) {
snprintf(err_str, sizeof(err_str), "\"success\"");
if (nw_descr == NULL) {
+ if (LNET_NETTYP(nw_descr->nw_id) == LOLND)
+ return LUSTRE_CFG_RC_NO_ERR;
+
if (nw_descr->nw_id == LNET_NIDNET(LNET_NID_ANY)) {
snprintf(err_str,
sizeof(err_str),
if (nw_descr->nw_id == LNET_NIDNET(LNET_NID_ANY)) {
snprintf(err_str,
sizeof(err_str),
struct cYAML **err_rc)
{
struct lnet_ioctl_numa_range data;
struct cYAML **err_rc)
{
struct lnet_ioctl_numa_range data;
- int rc = LUSTRE_CFG_RC_OUT_OF_MEM;
int l_errno;
char err_str[LNET_MAX_STR_LEN];
struct cYAML *root = NULL, *range = NULL;
int l_errno;
char err_str[LNET_MAX_STR_LEN];
struct cYAML *root = NULL, *range = NULL;
+ rc = LUSTRE_CFG_RC_OUT_OF_MEM;
+
root = cYAML_create_object(NULL, NULL);
if (root == NULL)
goto out;
root = cYAML_create_object(NULL, NULL);
if (root == NULL)
goto out;
cYAML_print_tree(root);
snprintf(err_str, sizeof(err_str), "\"success\"");
cYAML_print_tree(root);
snprintf(err_str, sizeof(err_str), "\"success\"");
+ rc = LUSTRE_CFG_RC_NO_ERR;
out:
if (show_rc == NULL || rc != LUSTRE_CFG_RC_NO_ERR) {
cYAML_free_tree(root);
out:
if (show_rc == NULL || rc != LUSTRE_CFG_RC_NO_ERR) {
cYAML_free_tree(root);
struct cYAML **err_rc)
{
struct lnet_ioctl_lnet_stats data;
struct cYAML **err_rc)
{
struct lnet_ioctl_lnet_stats data;
- int rc = LUSTRE_CFG_RC_OUT_OF_MEM;
int l_errno;
char err_str[LNET_MAX_STR_LEN];
struct cYAML *root = NULL, *stats = NULL;
int l_errno;
char err_str[LNET_MAX_STR_LEN];
struct cYAML *root = NULL, *stats = NULL;
+ rc = LUSTRE_CFG_RC_OUT_OF_MEM;
+
root = cYAML_create_object(NULL, NULL);
if (root == NULL)
goto out;
root = cYAML_create_object(NULL, NULL);
if (root == NULL)
goto out;
cYAML_print_tree(root);
snprintf(err_str, sizeof(err_str), "\"success\"");
cYAML_print_tree(root);
snprintf(err_str, sizeof(err_str), "\"success\"");
+ rc = LUSTRE_CFG_RC_NO_ERR;
out:
if (show_rc == NULL || rc != LUSTRE_CFG_RC_NO_ERR) {
cYAML_free_tree(root);
out:
if (show_rc == NULL || rc != LUSTRE_CFG_RC_NO_ERR) {
cYAML_free_tree(root);
net = cYAML_get_object_item(tree, "net type");
if (net)
nw_descr.nw_id = libcfs_str2net(net->cy_valuestring);
net = cYAML_get_object_item(tree, "net type");
if (net)
nw_descr.nw_id = libcfs_str2net(net->cy_valuestring);
+ else
+ nw_descr.nw_id = LOLND;
/*
* if neither net nor ip2nets are present, then we can not
/*
* if neither net nor ip2nets are present, then we can not
!non_mr, -1, &err_rc);
failed:
!non_mr, -1, &err_rc);
failed:
- for (i = 0; i < size; i++)
- free(nids[i]);
- free(nids);
+ if (nids) {
+ /* free the array of nids */
+ for (i = 0; i < size; i++)
+ free(nids[i]);
+ free(nids);
+ }
if (rc != LUSTRE_CFG_RC_NO_ERR)
cYAML_print_tree2file(stderr, err_rc);
if (rc != LUSTRE_CFG_RC_NO_ERR)
cYAML_print_tree2file(stderr, err_rc);
rc = lustre_lnet_del_peer_nid(prim_nid, nids, size, -1, &err_rc);
failed:
rc = lustre_lnet_del_peer_nid(prim_nid, nids, size, -1, &err_rc);
failed:
- for (i = 0; i < size; i++)
- free(nids[i]);
- free(nids);
+ if (nids) {
+ for (i = 0; i < size; i++)
+ free(nids[i]);
+ free(nids);
+ }
if (rc != LUSTRE_CFG_RC_NO_ERR)
cYAML_print_tree2file(stderr, err_rc);
if (rc != LUSTRE_CFG_RC_NO_ERR)
cYAML_print_tree2file(stderr, err_rc);