The procfs dir entry was added inside of an #ifdef, causing a build error
when we try to access it without CONFIG_PROC_FS set:

net/can/bcm.c:1541:14: error: 'struct netns_can' has no member named 
'bcmproc_dir'
net/can/bcm.c: In function 'bcm_connect':
net/can/bcm.c:1601:14: error: 'struct netns_can' has no member named 
'bcmproc_dir'
net/can/bcm.c: In function 'canbcm_pernet_init':
net/can/bcm.c:1696:11: error: 'struct netns_can' has no member named 
'bcmproc_dir'
net/can/bcm.c: In function 'canbcm_pernet_exit':
net/can/bcm.c:1707:15: error: 'struct netns_can' has no member named 
'bcmproc_dir'

This adds the same #ifdef around all users of the pointer. Alternatively
we could move the pointer outside of the #ifdef.

Fixes: 384317ef4187 ("can: network namespace support for CAN_BCM protocol")
Signed-off-by: Arnd Bergmann <a...@arndb.de>
---
 net/can/bcm.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/net/can/bcm.c b/net/can/bcm.c
index 0e855917b7e1..e6d9df27400b 100644
--- a/net/can/bcm.c
+++ b/net/can/bcm.c
@@ -1538,8 +1538,10 @@ static int bcm_release(struct socket *sock)
        }
 
        /* remove procfs entry */
+#ifdef CONFIG_PROC_FS
        if (net->can.bcmproc_dir && bo->bcm_proc_read)
                remove_proc_entry(bo->procname, net->can.bcmproc_dir);
+#endif
 
        /* remove device reference */
        if (bo->bound) {
@@ -1597,7 +1599,7 @@ static int bcm_connect(struct socket *sock, struct 
sockaddr *uaddr, int len,
                /* no interface reference for ifindex = 0 ('any' CAN device) */
                bo->ifindex = 0;
        }
-
+#ifdef CONFIG_PROC_FS
        if (net->can.bcmproc_dir) {
                /* unique socket address as filename */
                sprintf(bo->procname, "%lu", sock_i_ino(sk));
@@ -1609,6 +1611,7 @@ static int bcm_connect(struct socket *sock, struct 
sockaddr *uaddr, int len,
                        goto fail;
                }
        }
+#endif
 
        bo->bound = 1;
 
@@ -1691,22 +1694,23 @@ static const struct can_proto bcm_can_proto = {
 
 static int canbcm_pernet_init(struct net *net)
 {
+#ifdef CONFIG_PROC_FS
        /* create /proc/net/can-bcm directory */
-       if (IS_ENABLED(CONFIG_PROC_FS)) {
-               net->can.bcmproc_dir =
-                       proc_net_mkdir(net, "can-bcm", net->proc_net);
-       }
+       net->can.bcmproc_dir = proc_net_mkdir(net, "can-bcm", net->proc_net);
+#endif
 
        return 0;
 }
 
 static void canbcm_pernet_exit(struct net *net)
 {
+#ifdef CONFIG_PROC_FS
        /* remove /proc/net/can-bcm directory */
        if (IS_ENABLED(CONFIG_PROC_FS)) {
                if (net->can.bcmproc_dir)
                        remove_proc_entry("can-bcm", net->proc_net);
        }
+#endif
 }
 
 static struct pernet_operations canbcm_pernet_ops __read_mostly = {
-- 
2.9.0

Reply via email to