Merge tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming
[firefly-linux-kernel-4.4.55.git] / include / net / netprio_cgroup.h
index 2719dec6b5a8d32c6d36f818adc8ba006eabc02e..2760f4f4ae9b6779a7abd721b4ab428eb6c688fa 100644 (file)
 #include <linux/rcupdate.h>
 
 
+#if IS_ENABLED(CONFIG_NETPRIO_CGROUP)
 struct netprio_map {
        struct rcu_head rcu;
        u32 priomap_len;
        u32 priomap[];
 };
 
-#ifdef CONFIG_CGROUPS
-
 struct cgroup_netprio_state {
        struct cgroup_subsys_state css;
        u32 prioidx;
 };
 
-#ifndef CONFIG_NETPRIO_CGROUP
-extern int net_prio_subsys_id;
-#endif
-
 extern void sock_update_netprioidx(struct sock *sk, struct task_struct *task);
 
 #if IS_BUILTIN(CONFIG_NETPRIO_CGROUP)
@@ -56,33 +51,28 @@ static inline u32 task_netprioidx(struct task_struct *p)
 
 static inline u32 task_netprioidx(struct task_struct *p)
 {
-       struct cgroup_netprio_state *state;
-       int subsys_id;
+       struct cgroup_subsys_state *css;
        u32 idx = 0;
 
        rcu_read_lock();
-       subsys_id = rcu_dereference_index_check(net_prio_subsys_id,
-                                               rcu_read_lock_held());
-       if (subsys_id >= 0) {
-               state = container_of(task_subsys_state(p, subsys_id),
-                                    struct cgroup_netprio_state, css);
-               idx = state->prioidx;
-       }
+       css = task_subsys_state(p, net_prio_subsys_id);
+       if (css)
+               idx = container_of(css,
+                                  struct cgroup_netprio_state, css)->prioidx;
        rcu_read_unlock();
        return idx;
 }
+#endif
 
-#else
+#else /* !CONFIG_NETPRIO_CGROUP */
 
 static inline u32 task_netprioidx(struct task_struct *p)
 {
        return 0;
 }
 
-#endif /* CONFIG_NETPRIO_CGROUP */
-
-#else
 #define sock_update_netprioidx(sk, task)
-#endif
+
+#endif /* CONFIG_NETPRIO_CGROUP */
 
 #endif  /* _NET_CLS_CGROUP_H */