| From 1aee351a739153529fbb98ee461777b2abd5e1c9 Mon Sep 17 00:00:00 2001 |
| From: Tomas Winkler <tomas.winkler@intel.com> |
| Date: Mon, 2 Sep 2013 13:29:45 +0300 |
| Subject: mei: make me client counters less error prone |
| |
| From: Tomas Winkler <tomas.winkler@intel.com> |
| |
| commit 1aee351a739153529fbb98ee461777b2abd5e1c9 upstream. |
| |
| 1. u8 counters are prone to hard to detect overflow: |
| make them unsigned long to match bit_ functions argument type |
| |
| 2. don't check me_clients_num for negativity, it is unsigned. |
| |
| 3. init all the me client counters from one place |
| |
| Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/misc/mei/hbm.c | 10 ++++++---- |
| drivers/misc/mei/mei_dev.h | 6 +++--- |
| 2 files changed, 9 insertions(+), 7 deletions(-) |
| |
| --- a/drivers/misc/mei/hbm.c |
| +++ b/drivers/misc/mei/hbm.c |
| @@ -35,11 +35,15 @@ static void mei_hbm_me_cl_allocate(struc |
| struct mei_me_client *clients; |
| int b; |
| |
| + dev->me_clients_num = 0; |
| + dev->me_client_presentation_num = 0; |
| + dev->me_client_index = 0; |
| + |
| /* count how many ME clients we have */ |
| for_each_set_bit(b, dev->me_clients_map, MEI_CLIENTS_MAX) |
| dev->me_clients_num++; |
| |
| - if (dev->me_clients_num <= 0) |
| + if (dev->me_clients_num == 0) |
| return; |
| |
| kfree(dev->me_clients); |
| @@ -221,7 +225,7 @@ static int mei_hbm_prop_req(struct mei_d |
| struct hbm_props_request *prop_req; |
| const size_t len = sizeof(struct hbm_props_request); |
| unsigned long next_client_index; |
| - u8 client_num; |
| + unsigned long client_num; |
| |
| |
| client_num = dev->me_client_presentation_num; |
| @@ -650,8 +654,6 @@ void mei_hbm_dispatch(struct mei_device |
| if (dev->dev_state == MEI_DEV_INIT_CLIENTS && |
| dev->hbm_state == MEI_HBM_ENUM_CLIENTS) { |
| dev->init_clients_timer = 0; |
| - dev->me_client_presentation_num = 0; |
| - dev->me_client_index = 0; |
| mei_hbm_me_cl_allocate(dev); |
| dev->hbm_state = MEI_HBM_CLIENT_PROPERTIES; |
| |
| --- a/drivers/misc/mei/mei_dev.h |
| +++ b/drivers/misc/mei/mei_dev.h |
| @@ -402,9 +402,9 @@ struct mei_device { |
| struct mei_me_client *me_clients; /* Note: memory has to be allocated */ |
| DECLARE_BITMAP(me_clients_map, MEI_CLIENTS_MAX); |
| DECLARE_BITMAP(host_clients_map, MEI_CLIENTS_MAX); |
| - u8 me_clients_num; |
| - u8 me_client_presentation_num; |
| - u8 me_client_index; |
| + unsigned long me_clients_num; |
| + unsigned long me_client_presentation_num; |
| + unsigned long me_client_index; |
| |
| struct mei_cl wd_cl; |
| enum mei_wd_states wd_state; |