staging/mei: fix check for allocating host client id
authorTomas Winkler <tomas.winkler@intel.com>
Sun, 13 Nov 2011 07:41:15 +0000 (09:41 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sun, 27 Nov 2011 00:05:14 +0000 (16:05 -0800)
MEI_CLIENTS_MAX is 255 and host_client_id is u8 therefore
for check to work we need to first assign the return value
of find_first_zero_bit to unsigned long variable

Fix warning

drivers/staging/mei/main.c: In function mei_open
drivers/staging/mei/main.c:260:2: warning: comparison is always false due to limited range of data type

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/mei/main.c

index 410b5d46b1508bc5ac499cb81356316b61162ae8..1ea04b31f6118e0ad2b278f6e709a3c04f8a0ea2 100644 (file)
@@ -228,8 +228,9 @@ static struct mei_cl_cb *find_read_list_entry(
 static int mei_open(struct inode *inode, struct file *file)
 {
        struct mei_cl *cl;
-       int err;
        struct mei_device *dev;
+       unsigned long cl_id;
+       int err;
 
        err = -ENODEV;
        if (!mei_device)
@@ -255,14 +256,16 @@ static int mei_open(struct inode *inode, struct file *file)
        if (dev->open_handle_count >= MEI_MAX_OPEN_HANDLE_COUNT)
                goto out_unlock;
 
-       cl->host_client_id = find_first_zero_bit(dev->host_clients_map,
-                                                       MEI_CLIENTS_MAX);
-       if (cl->host_client_id > MEI_CLIENTS_MAX)
+       cl_id = find_first_zero_bit(dev->host_clients_map, MEI_CLIENTS_MAX);
+       if (cl_id >= MEI_CLIENTS_MAX)
                goto out_unlock;
 
+       cl->host_client_id  = cl_id;
+
        dev_dbg(&dev->pdev->dev, "client_id = %d\n", cl->host_client_id);
 
        dev->open_handle_count++;
+
        list_add_tail(&cl->link, &dev->file_list);
 
        set_bit(cl->host_client_id, dev->host_clients_map);