gpio: omap: omap_gpio_show_rev is not __init
[linux-2.6-microblaze.git] / drivers / thunderbolt / switch.c
index 40219a7..53f40c5 100644 (file)
@@ -30,7 +30,7 @@ static DEFINE_IDA(nvm_ida);
 
 struct nvm_auth_status {
        struct list_head list;
-       uuid_be uuid;
+       uuid_t uuid;
        u32 status;
 };
 
@@ -47,7 +47,7 @@ static struct nvm_auth_status *__nvm_get_auth_status(const struct tb_switch *sw)
        struct nvm_auth_status *st;
 
        list_for_each_entry(st, &nvm_auth_status_cache, list) {
-               if (!uuid_be_cmp(st->uuid, *sw->uuid))
+               if (uuid_equal(&st->uuid, sw->uuid))
                        return st;
        }
 
@@ -807,11 +807,11 @@ static ssize_t key_store(struct device *dev, struct device_attribute *attr,
        struct tb_switch *sw = tb_to_switch(dev);
        u8 key[TB_SWITCH_KEY_SIZE];
        ssize_t ret = count;
+       bool clear = false;
 
-       if (count < 64)
-               return -EINVAL;
-
-       if (hex2bin(key, buf, sizeof(key)))
+       if (!strcmp(buf, "\n"))
+               clear = true;
+       else if (hex2bin(key, buf, sizeof(key)))
                return -EINVAL;
 
        if (mutex_lock_interruptible(&switch_lock))
@@ -821,15 +821,19 @@ static ssize_t key_store(struct device *dev, struct device_attribute *attr,
                ret = -EBUSY;
        } else {
                kfree(sw->key);
-               sw->key = kmemdup(key, sizeof(key), GFP_KERNEL);
-               if (!sw->key)
-                       ret = -ENOMEM;
+               if (clear) {
+                       sw->key = NULL;
+               } else {
+                       sw->key = kmemdup(key, sizeof(key), GFP_KERNEL);
+                       if (!sw->key)
+                               ret = -ENOMEM;
+               }
        }
 
        mutex_unlock(&switch_lock);
        return ret;
 }
-static DEVICE_ATTR_RW(key);
+static DEVICE_ATTR(key, 0600, key_show, key_store);
 
 static ssize_t nvm_authenticate_show(struct device *dev,
        struct device_attribute *attr, char *buf)
@@ -1461,7 +1465,7 @@ struct tb_sw_lookup {
        struct tb *tb;
        u8 link;
        u8 depth;
-       const uuid_be *uuid;
+       const uuid_t *uuid;
 };
 
 static int tb_switch_match(struct device *dev, void *data)
@@ -1518,7 +1522,7 @@ struct tb_switch *tb_switch_find_by_link_depth(struct tb *tb, u8 link, u8 depth)
  * Returned switch has reference count increased so the caller needs to
  * call tb_switch_put() when done with the switch.
  */
-struct tb_switch *tb_switch_find_by_uuid(struct tb *tb, const uuid_be *uuid)
+struct tb_switch *tb_switch_find_by_uuid(struct tb *tb, const uuid_t *uuid)
 {
        struct tb_sw_lookup lookup;
        struct device *dev;