Message ID | 20200408190448.778791-1-arnd@arndb.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | smack: avoid unused 'sip' variable warning | expand |
On 4/8/2020 12:04 PM, Arnd Bergmann wrote: > The mix of IS_ENABLED() and #ifdef checks has left a combination > that causes a warning about an unused variable: > > security/smack/smack_lsm.c: In function 'smack_socket_connect': > security/smack/smack_lsm.c:2838:24: error: unused variable 'sip' [-Werror=unused-variable] > 2838 | struct sockaddr_in6 *sip = (struct sockaddr_in6 *)sap; > > Change the code to use C-style checks consistently so the compiler > can handle it correctly. > > Fixes: 87fbfffcc89b ("broken ping to ipv6 linklocal addresses on debian buster") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Thanks. I will take this, assuming it passes testing. > --- > There are lots of ways of addressing this, if you prefer a different > way, please just treat this patch as a bug report and apply the > replacement patch directly. > --- > security/smack/smack.h | 6 ------ > security/smack/smack_lsm.c | 25 ++++++++----------------- > 2 files changed, 8 insertions(+), 23 deletions(-) > > diff --git a/security/smack/smack.h b/security/smack/smack.h > index 62529f382942..335d2411abe4 100644 > --- a/security/smack/smack.h > +++ b/security/smack/smack.h > @@ -148,7 +148,6 @@ struct smk_net4addr { > struct smack_known *smk_label; /* label */ > }; > > -#if IS_ENABLED(CONFIG_IPV6) > /* > * An entry in the table identifying IPv6 hosts. > */ > @@ -159,9 +158,7 @@ struct smk_net6addr { > int smk_masks; /* mask size */ > struct smack_known *smk_label; /* label */ > }; > -#endif /* CONFIG_IPV6 */ > > -#ifdef SMACK_IPV6_PORT_LABELING > /* > * An entry in the table identifying ports. > */ > @@ -174,7 +171,6 @@ struct smk_port_label { > short smk_sock_type; /* Socket type */ > short smk_can_reuse; > }; > -#endif /* SMACK_IPV6_PORT_LABELING */ > > struct smack_known_list_elem { > struct list_head list; > @@ -335,9 +331,7 @@ extern struct smack_known smack_known_web; > extern struct mutex smack_known_lock; > extern struct list_head smack_known_list; > extern struct list_head smk_net4addr_list; > -#if IS_ENABLED(CONFIG_IPV6) > extern struct list_head smk_net6addr_list; > -#endif /* CONFIG_IPV6 */ > > extern struct mutex smack_onlycap_lock; > extern struct list_head smack_onlycap_list; > diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c > index 8c61d175e195..e193b0db0271 100644 > --- a/security/smack/smack_lsm.c > +++ b/security/smack/smack_lsm.c > @@ -50,10 +50,8 @@ > #define SMK_RECEIVING 1 > #define SMK_SENDING 2 > > -#ifdef SMACK_IPV6_PORT_LABELING > -DEFINE_MUTEX(smack_ipv6_lock); > +static DEFINE_MUTEX(smack_ipv6_lock); > static LIST_HEAD(smk_ipv6_port_list); > -#endif > static struct kmem_cache *smack_inode_cache; > struct kmem_cache *smack_rule_cache; > int smack_enabled; > @@ -2320,7 +2318,6 @@ static struct smack_known *smack_ipv4host_label(struct sockaddr_in *sip) > return NULL; > } > > -#if IS_ENABLED(CONFIG_IPV6) > /* > * smk_ipv6_localhost - Check for local ipv6 host address > * @sip: the address > @@ -2388,7 +2385,6 @@ static struct smack_known *smack_ipv6host_label(struct sockaddr_in6 *sip) > > return NULL; > } > -#endif /* CONFIG_IPV6 */ > > /** > * smack_netlabel - Set the secattr on a socket > @@ -2477,7 +2473,6 @@ static int smack_netlabel_send(struct sock *sk, struct sockaddr_in *sap) > return smack_netlabel(sk, sk_lbl); > } > > -#if IS_ENABLED(CONFIG_IPV6) > /** > * smk_ipv6_check - check Smack access > * @subject: subject Smack label > @@ -2510,7 +2505,6 @@ static int smk_ipv6_check(struct smack_known *subject, > rc = smk_bu_note("IPv6 check", subject, object, MAY_WRITE, rc); > return rc; > } > -#endif /* CONFIG_IPV6 */ > > #ifdef SMACK_IPV6_PORT_LABELING > /** > @@ -2599,6 +2593,7 @@ static void smk_ipv6_port_label(struct socket *sock, struct sockaddr *address) > mutex_unlock(&smack_ipv6_lock); > return; > } > +#endif > > /** > * smk_ipv6_port_check - check Smack port access > @@ -2661,7 +2656,6 @@ static int smk_ipv6_port_check(struct sock *sk, struct sockaddr_in6 *address, > > return smk_ipv6_check(skp, object, address, act); > } > -#endif /* SMACK_IPV6_PORT_LABELING */ > > /** > * smack_inode_setsecurity - set smack xattrs > @@ -2836,24 +2830,21 @@ static int smack_socket_connect(struct socket *sock, struct sockaddr *sap, > return 0; > if (IS_ENABLED(CONFIG_IPV6) && sap->sa_family == AF_INET6) { > struct sockaddr_in6 *sip = (struct sockaddr_in6 *)sap; > -#ifdef SMACK_IPV6_SECMARK_LABELING > - struct smack_known *rsp; > -#endif > + struct smack_known *rsp = NULL; > > if (addrlen < SIN6_LEN_RFC2133) > return 0; > -#ifdef SMACK_IPV6_SECMARK_LABELING > - rsp = smack_ipv6host_label(sip); > + if (__is_defined(SMACK_IPV6_SECMARK_LABELING)) > + rsp = smack_ipv6host_label(sip); > if (rsp != NULL) { > struct socket_smack *ssp = sock->sk->sk_security; > > rc = smk_ipv6_check(ssp->smk_out, rsp, sip, > SMK_CONNECTING); > } > -#endif > -#ifdef SMACK_IPV6_PORT_LABELING > - rc = smk_ipv6_port_check(sock->sk, sip, SMK_CONNECTING); > -#endif > + if (__is_defined(SMACK_IPV6_PORT_LABELING)) > + rc = smk_ipv6_port_check(sock->sk, sip, SMK_CONNECTING); > + > return rc; > } > if (sap->sa_family != AF_INET || addrlen < sizeof(struct sockaddr_in))
diff --git a/security/smack/smack.h b/security/smack/smack.h index 62529f382942..335d2411abe4 100644 --- a/security/smack/smack.h +++ b/security/smack/smack.h @@ -148,7 +148,6 @@ struct smk_net4addr { struct smack_known *smk_label; /* label */ }; -#if IS_ENABLED(CONFIG_IPV6) /* * An entry in the table identifying IPv6 hosts. */ @@ -159,9 +158,7 @@ struct smk_net6addr { int smk_masks; /* mask size */ struct smack_known *smk_label; /* label */ }; -#endif /* CONFIG_IPV6 */ -#ifdef SMACK_IPV6_PORT_LABELING /* * An entry in the table identifying ports. */ @@ -174,7 +171,6 @@ struct smk_port_label { short smk_sock_type; /* Socket type */ short smk_can_reuse; }; -#endif /* SMACK_IPV6_PORT_LABELING */ struct smack_known_list_elem { struct list_head list; @@ -335,9 +331,7 @@ extern struct smack_known smack_known_web; extern struct mutex smack_known_lock; extern struct list_head smack_known_list; extern struct list_head smk_net4addr_list; -#if IS_ENABLED(CONFIG_IPV6) extern struct list_head smk_net6addr_list; -#endif /* CONFIG_IPV6 */ extern struct mutex smack_onlycap_lock; extern struct list_head smack_onlycap_list; diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index 8c61d175e195..e193b0db0271 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c @@ -50,10 +50,8 @@ #define SMK_RECEIVING 1 #define SMK_SENDING 2 -#ifdef SMACK_IPV6_PORT_LABELING -DEFINE_MUTEX(smack_ipv6_lock); +static DEFINE_MUTEX(smack_ipv6_lock); static LIST_HEAD(smk_ipv6_port_list); -#endif static struct kmem_cache *smack_inode_cache; struct kmem_cache *smack_rule_cache; int smack_enabled; @@ -2320,7 +2318,6 @@ static struct smack_known *smack_ipv4host_label(struct sockaddr_in *sip) return NULL; } -#if IS_ENABLED(CONFIG_IPV6) /* * smk_ipv6_localhost - Check for local ipv6 host address * @sip: the address @@ -2388,7 +2385,6 @@ static struct smack_known *smack_ipv6host_label(struct sockaddr_in6 *sip) return NULL; } -#endif /* CONFIG_IPV6 */ /** * smack_netlabel - Set the secattr on a socket @@ -2477,7 +2473,6 @@ static int smack_netlabel_send(struct sock *sk, struct sockaddr_in *sap) return smack_netlabel(sk, sk_lbl); } -#if IS_ENABLED(CONFIG_IPV6) /** * smk_ipv6_check - check Smack access * @subject: subject Smack label @@ -2510,7 +2505,6 @@ static int smk_ipv6_check(struct smack_known *subject, rc = smk_bu_note("IPv6 check", subject, object, MAY_WRITE, rc); return rc; } -#endif /* CONFIG_IPV6 */ #ifdef SMACK_IPV6_PORT_LABELING /** @@ -2599,6 +2593,7 @@ static void smk_ipv6_port_label(struct socket *sock, struct sockaddr *address) mutex_unlock(&smack_ipv6_lock); return; } +#endif /** * smk_ipv6_port_check - check Smack port access @@ -2661,7 +2656,6 @@ static int smk_ipv6_port_check(struct sock *sk, struct sockaddr_in6 *address, return smk_ipv6_check(skp, object, address, act); } -#endif /* SMACK_IPV6_PORT_LABELING */ /** * smack_inode_setsecurity - set smack xattrs @@ -2836,24 +2830,21 @@ static int smack_socket_connect(struct socket *sock, struct sockaddr *sap, return 0; if (IS_ENABLED(CONFIG_IPV6) && sap->sa_family == AF_INET6) { struct sockaddr_in6 *sip = (struct sockaddr_in6 *)sap; -#ifdef SMACK_IPV6_SECMARK_LABELING - struct smack_known *rsp; -#endif + struct smack_known *rsp = NULL; if (addrlen < SIN6_LEN_RFC2133) return 0; -#ifdef SMACK_IPV6_SECMARK_LABELING - rsp = smack_ipv6host_label(sip); + if (__is_defined(SMACK_IPV6_SECMARK_LABELING)) + rsp = smack_ipv6host_label(sip); if (rsp != NULL) { struct socket_smack *ssp = sock->sk->sk_security; rc = smk_ipv6_check(ssp->smk_out, rsp, sip, SMK_CONNECTING); } -#endif -#ifdef SMACK_IPV6_PORT_LABELING - rc = smk_ipv6_port_check(sock->sk, sip, SMK_CONNECTING); -#endif + if (__is_defined(SMACK_IPV6_PORT_LABELING)) + rc = smk_ipv6_port_check(sock->sk, sip, SMK_CONNECTING); + return rc; } if (sap->sa_family != AF_INET || addrlen < sizeof(struct sockaddr_in))
The mix of IS_ENABLED() and #ifdef checks has left a combination that causes a warning about an unused variable: security/smack/smack_lsm.c: In function 'smack_socket_connect': security/smack/smack_lsm.c:2838:24: error: unused variable 'sip' [-Werror=unused-variable] 2838 | struct sockaddr_in6 *sip = (struct sockaddr_in6 *)sap; Change the code to use C-style checks consistently so the compiler can handle it correctly. Fixes: 87fbfffcc89b ("broken ping to ipv6 linklocal addresses on debian buster") Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- There are lots of ways of addressing this, if you prefer a different way, please just treat this patch as a bug report and apply the replacement patch directly. --- security/smack/smack.h | 6 ------ security/smack/smack_lsm.c | 25 ++++++++----------------- 2 files changed, 8 insertions(+), 23 deletions(-)