提交 ec8f2375 编写于 作者: P Paul Moore 提交者: David S. Miller

netlabel: Compiler warning and NULL pointer dereference fix

Fix the two compiler warnings show below.  Thanks to Geert Uytterhoeven for
finding and reporting the problem.

 net/netlabel/netlabel_unlabeled.c:567: warning: 'entry' may be used
   uninitialized in this function
 net/netlabel/netlabel_unlabeled.c:629: warning: 'entry' may be used
   uninitialized in this function
Signed-off-by: NPaul Moore <paul.moore@hp.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 30bb0e0d
...@@ -562,7 +562,6 @@ static int netlbl_unlhsh_remove_addr4(struct net *net, ...@@ -562,7 +562,6 @@ static int netlbl_unlhsh_remove_addr4(struct net *net,
const struct in_addr *mask, const struct in_addr *mask,
struct netlbl_audit *audit_info) struct netlbl_audit *audit_info)
{ {
int ret_val = 0;
struct netlbl_af4list *list_entry; struct netlbl_af4list *list_entry;
struct netlbl_unlhsh_addr4 *entry; struct netlbl_unlhsh_addr4 *entry;
struct audit_buffer *audit_buf; struct audit_buffer *audit_buf;
...@@ -577,7 +576,7 @@ static int netlbl_unlhsh_remove_addr4(struct net *net, ...@@ -577,7 +576,7 @@ static int netlbl_unlhsh_remove_addr4(struct net *net,
if (list_entry != NULL) if (list_entry != NULL)
entry = netlbl_unlhsh_addr4_entry(list_entry); entry = netlbl_unlhsh_addr4_entry(list_entry);
else else
ret_val = -ENOENT; entry = NULL;
audit_buf = netlbl_audit_start_common(AUDIT_MAC_UNLBL_STCDEL, audit_buf = netlbl_audit_start_common(AUDIT_MAC_UNLBL_STCDEL,
audit_info); audit_info);
...@@ -588,19 +587,21 @@ static int netlbl_unlhsh_remove_addr4(struct net *net, ...@@ -588,19 +587,21 @@ static int netlbl_unlhsh_remove_addr4(struct net *net,
addr->s_addr, mask->s_addr); addr->s_addr, mask->s_addr);
if (dev != NULL) if (dev != NULL)
dev_put(dev); dev_put(dev);
if (entry && security_secid_to_secctx(entry->secid, if (entry != NULL &&
&secctx, security_secid_to_secctx(entry->secid,
&secctx_len) == 0) { &secctx, &secctx_len) == 0) {
audit_log_format(audit_buf, " sec_obj=%s", secctx); audit_log_format(audit_buf, " sec_obj=%s", secctx);
security_release_secctx(secctx, secctx_len); security_release_secctx(secctx, secctx_len);
} }
audit_log_format(audit_buf, " res=%u", ret_val == 0 ? 1 : 0); audit_log_format(audit_buf, " res=%u", entry != NULL ? 1 : 0);
audit_log_end(audit_buf); audit_log_end(audit_buf);
} }
if (ret_val == 0) if (entry == NULL)
call_rcu(&entry->rcu, netlbl_unlhsh_free_addr4); return -ENOENT;
return ret_val;
call_rcu(&entry->rcu, netlbl_unlhsh_free_addr4);
return 0;
} }
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
...@@ -624,7 +625,6 @@ static int netlbl_unlhsh_remove_addr6(struct net *net, ...@@ -624,7 +625,6 @@ static int netlbl_unlhsh_remove_addr6(struct net *net,
const struct in6_addr *mask, const struct in6_addr *mask,
struct netlbl_audit *audit_info) struct netlbl_audit *audit_info)
{ {
int ret_val = 0;
struct netlbl_af6list *list_entry; struct netlbl_af6list *list_entry;
struct netlbl_unlhsh_addr6 *entry; struct netlbl_unlhsh_addr6 *entry;
struct audit_buffer *audit_buf; struct audit_buffer *audit_buf;
...@@ -638,7 +638,7 @@ static int netlbl_unlhsh_remove_addr6(struct net *net, ...@@ -638,7 +638,7 @@ static int netlbl_unlhsh_remove_addr6(struct net *net,
if (list_entry != NULL) if (list_entry != NULL)
entry = netlbl_unlhsh_addr6_entry(list_entry); entry = netlbl_unlhsh_addr6_entry(list_entry);
else else
ret_val = -ENOENT; entry = NULL;
audit_buf = netlbl_audit_start_common(AUDIT_MAC_UNLBL_STCDEL, audit_buf = netlbl_audit_start_common(AUDIT_MAC_UNLBL_STCDEL,
audit_info); audit_info);
...@@ -649,19 +649,21 @@ static int netlbl_unlhsh_remove_addr6(struct net *net, ...@@ -649,19 +649,21 @@ static int netlbl_unlhsh_remove_addr6(struct net *net,
addr, mask); addr, mask);
if (dev != NULL) if (dev != NULL)
dev_put(dev); dev_put(dev);
if (entry && security_secid_to_secctx(entry->secid, if (entry != NULL &&
&secctx, security_secid_to_secctx(entry->secid,
&secctx_len) == 0) { &secctx, &secctx_len) == 0) {
audit_log_format(audit_buf, " sec_obj=%s", secctx); audit_log_format(audit_buf, " sec_obj=%s", secctx);
security_release_secctx(secctx, secctx_len); security_release_secctx(secctx, secctx_len);
} }
audit_log_format(audit_buf, " res=%u", ret_val == 0 ? 1 : 0); audit_log_format(audit_buf, " res=%u", entry != NULL ? 1 : 0);
audit_log_end(audit_buf); audit_log_end(audit_buf);
} }
if (ret_val == 0) if (entry == NULL)
call_rcu(&entry->rcu, netlbl_unlhsh_free_addr6); return -ENOENT;
return ret_val;
call_rcu(&entry->rcu, netlbl_unlhsh_free_addr6);
return 0;
} }
#endif /* IPv6 */ #endif /* IPv6 */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册