Patchwork [07/21] netfilter: nf_nat: remove inline marking of EXPORT_SYMBOL functions

login
register
mail settings
Submitter Denis Efremov
Date May 9, 2013, 9:19 a.m.
Message ID <1368091192-10245-2-git-send-email-yefremov.denis@gmail.com>
Download mbox | patch
Permalink /patch/242734/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Denis Efremov - May 9, 2013, 9:19 a.m.
EXPORT_SYMBOL and inline directives are contradictory to each other.
The patch fixes this inconsistency.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Denis Efremov <yefremov.denis@gmail.com>
---
 net/netfilter/nf_nat_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
David Laight - May 9, 2013, 9:47 a.m.
> EXPORT_SYMBOL and inline directives are contradictory to each other.
> The patch fixes this inconsistency.
...
> -inline const struct nf_nat_l4proto *
> +const struct nf_nat_l4proto *
>  __nf_nat_l4proto_find(u8 family, u8 protonum)
>  {
>  	return rcu_dereference(nf_nat_l4protos[family][protonum]);

If it makes sense to inline the local calls (ie the cost
of the call is significant) then possibly add an inlined
(or inlinable) static function that is called locally and
by the exported one?

I'm not sure that gcc is allowed to make the assumption
that the local exported function will be called - and
thus inline it.

	David



--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/net/netfilter/nf_nat_core.c b/net/netfilter/nf_nat_core.c
index 038eee5..38492e0 100644
--- a/net/netfilter/nf_nat_core.c
+++ b/net/netfilter/nf_nat_core.c
@@ -44,7 +44,7 @@  __nf_nat_l3proto_find(u8 family)
 	return rcu_dereference(nf_nat_l3protos[family]);
 }
 
-inline const struct nf_nat_l4proto *
+const struct nf_nat_l4proto *
 __nf_nat_l4proto_find(u8 family, u8 protonum)
 {
 	return rcu_dereference(nf_nat_l4protos[family][protonum]);