From 6f37aca827e6d075c9e9d3ab1b233cce2a3bc9f1 Mon Sep 17 00:00:00 2001 From: Tomas Winkler Date: Sun, 13 Nov 2011 09:41:15 +0200 Subject: [PATCH] staging/mei: fix check for allocating host client id 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 Signed-off-by: Greg Kroah-Hartman --- drivers/staging/mei/main.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/staging/mei/main.c b/drivers/staging/mei/main.c index 410b5d46b150..1ea04b31f611 100644 --- a/drivers/staging/mei/main.c +++ b/drivers/staging/mei/main.c @@ -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); -- 2.30.2