]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - security/device_cgroup.c
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
[karo-tx-linux.git] / security / device_cgroup.c
index 635a49db005d4a4313f6a52243c8a748dab49c18..c123628d3f848ee25497858a96c861a835f723d2 100644 (file)
@@ -56,11 +56,6 @@ static inline struct dev_cgroup *css_to_devcgroup(struct cgroup_subsys_state *s)
        return s ? container_of(s, struct dev_cgroup, css) : NULL;
 }
 
-static inline struct dev_cgroup *cgroup_to_devcgroup(struct cgroup *cgroup)
-{
-       return css_to_devcgroup(cgroup_css(cgroup, devices_subsys_id));
-}
-
 static inline struct dev_cgroup *task_devcgroup(struct task_struct *task)
 {
        return css_to_devcgroup(task_css(task, devices_subsys_id));
@@ -68,7 +63,7 @@ static inline struct dev_cgroup *task_devcgroup(struct task_struct *task)
 
 struct cgroup_subsys devices_subsys;
 
-static int devcgroup_can_attach(struct cgroup *new_cgrp,
+static int devcgroup_can_attach(struct cgroup_subsys_state *new_css,
                                struct cgroup_taskset *set)
 {
        struct task_struct *task = cgroup_taskset_first(set);
@@ -193,13 +188,13 @@ static inline bool is_devcg_online(const struct dev_cgroup *devcg)
 /**
  * devcgroup_online - initializes devcgroup's behavior and exceptions based on
  *                   parent's
- * @cgroup: cgroup getting online
+ * @css: css getting online
  * returns 0 in case of success, error code otherwise
  */
-static int devcgroup_online(struct cgroup *cgroup)
+static int devcgroup_online(struct cgroup_subsys_state *css)
 {
-       struct dev_cgroup *dev_cgroup = cgroup_to_devcgroup(cgroup);
-       struct dev_cgroup *parent_dev_cgroup = css_to_devcgroup(css_parent(&dev_cgroup->css));
+       struct dev_cgroup *dev_cgroup = css_to_devcgroup(css);
+       struct dev_cgroup *parent_dev_cgroup = css_to_devcgroup(css_parent(css));
        int ret = 0;
 
        mutex_lock(&devcgroup_mutex);
@@ -217,9 +212,9 @@ static int devcgroup_online(struct cgroup *cgroup)
        return ret;
 }
 
-static void devcgroup_offline(struct cgroup *cgroup)
+static void devcgroup_offline(struct cgroup_subsys_state *css)
 {
-       struct dev_cgroup *dev_cgroup = cgroup_to_devcgroup(cgroup);
+       struct dev_cgroup *dev_cgroup = css_to_devcgroup(css);
 
        mutex_lock(&devcgroup_mutex);
        dev_cgroup->behavior = DEVCG_DEFAULT_NONE;
@@ -229,7 +224,8 @@ static void devcgroup_offline(struct cgroup *cgroup)
 /*
  * called from kernel/cgroup.c with cgroup_lock() held.
  */
-static struct cgroup_subsys_state *devcgroup_css_alloc(struct cgroup *cgroup)
+static struct cgroup_subsys_state *
+devcgroup_css_alloc(struct cgroup_subsys_state *parent_css)
 {
        struct dev_cgroup *dev_cgroup;
 
@@ -242,11 +238,10 @@ static struct cgroup_subsys_state *devcgroup_css_alloc(struct cgroup *cgroup)
        return &dev_cgroup->css;
 }
 
-static void devcgroup_css_free(struct cgroup *cgroup)
+static void devcgroup_css_free(struct cgroup_subsys_state *css)
 {
-       struct dev_cgroup *dev_cgroup;
+       struct dev_cgroup *dev_cgroup = css_to_devcgroup(css);
 
-       dev_cgroup = cgroup_to_devcgroup(cgroup);
        __dev_exception_clean(dev_cgroup);
        kfree(dev_cgroup);
 }
@@ -289,10 +284,10 @@ static void set_majmin(char *str, unsigned m)
                sprintf(str, "%u", m);
 }
 
-static int devcgroup_seq_read(struct cgroup *cgroup, struct cftype *cft,
-                               struct seq_file *m)
+static int devcgroup_seq_read(struct cgroup_subsys_state *css,
+                             struct cftype *cft, struct seq_file *m)
 {
-       struct dev_cgroup *devcgroup = cgroup_to_devcgroup(cgroup);
+       struct dev_cgroup *devcgroup = css_to_devcgroup(css);
        struct dev_exception_item *ex;
        char maj[MAJMINLEN], min[MAJMINLEN], acc[ACCLEN];
 
@@ -447,13 +442,13 @@ static void revalidate_active_exceptions(struct dev_cgroup *devcg)
 static int propagate_exception(struct dev_cgroup *devcg_root,
                               struct dev_exception_item *ex)
 {
-       struct cgroup *root = devcg_root->css.cgroup, *pos;
+       struct cgroup_subsys_state *pos;
        int rc = 0;
 
        rcu_read_lock();
 
-       cgroup_for_each_descendant_pre(pos, root) {
-               struct dev_cgroup *devcg = cgroup_to_devcgroup(pos);
+       css_for_each_descendant_pre(pos, &devcg_root->css) {
+               struct dev_cgroup *devcg = css_to_devcgroup(pos);
 
                /*
                 * Because devcgroup_mutex is held, no devcg will become
@@ -461,7 +456,7 @@ static int propagate_exception(struct dev_cgroup *devcg_root,
                 * methods), and online ones are safe to access outside RCU
                 * read lock without bumping refcnt.
                 */
-               if (!is_devcg_online(devcg))
+               if (pos == &devcg_root->css || !is_devcg_online(devcg))
                        continue;
 
                rcu_read_unlock();
@@ -669,13 +664,13 @@ static int devcgroup_update_access(struct dev_cgroup *devcgroup,
        return rc;
 }
 
-static int devcgroup_access_write(struct cgroup *cgrp, struct cftype *cft,
-                                 const char *buffer)
+static int devcgroup_access_write(struct cgroup_subsys_state *css,
+                                 struct cftype *cft, const char *buffer)
 {
        int retval;
 
        mutex_lock(&devcgroup_mutex);
-       retval = devcgroup_update_access(cgroup_to_devcgroup(cgrp),
+       retval = devcgroup_update_access(css_to_devcgroup(css),
                                         cft->private, buffer);
        mutex_unlock(&devcgroup_mutex);
        return retval;