diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2013-09-16 22:44:47 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-10-04 01:01:16 +0200 |
commit | 22f96a0eb6c62b570621d77dacbf2589a6de2997 (patch) | |
tree | c81ff5bc3b2899721514fdbccc7d5c9bc22b504b /drivers/misc/mei/main.c | |
parent | mei: simplify mei_open error handling (diff) | |
download | linux-22f96a0eb6c62b570621d77dacbf2589a6de2997.tar.xz linux-22f96a0eb6c62b570621d77dacbf2589a6de2997.zip |
mei: revamp open handler counts
Make open counter to be incremented and decremented
from mei_cl_link and mei_cl_unlik function respectively
Nfc was assuming symmetric linking API and thus open handler
count was never decreased. This patch fixes that.
We need to add separate open hander count for amthif which
is handled out of link/unlink functions and doesn't break
the symmetric API.
Last we do not waste clients slots if amthif or wd are not present
in the device. we don't need to allocates slots ahead
it is all covered by link/unlink before the devices is responding
to user space connection and thus not racing on allocation
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/mei/main.c')
-rw-r--r-- | drivers/misc/mei/main.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/drivers/misc/mei/main.c b/drivers/misc/mei/main.c index 87ab5ca1d633..9661a812f550 100644 --- a/drivers/misc/mei/main.c +++ b/drivers/misc/mei/main.c @@ -141,10 +141,6 @@ static int mei_release(struct inode *inode, struct file *file) cl->host_client_id, cl->me_client_id); - if (dev->open_handle_count > 0) { - clear_bit(cl->host_client_id, dev->host_clients_map); - dev->open_handle_count--; - } mei_cl_unlink(cl); @@ -498,11 +494,11 @@ static int mei_ioctl_connect_client(struct file *file, rets = -ENODEV; goto end; } - clear_bit(cl->host_client_id, dev->host_clients_map); mei_cl_unlink(cl); kfree(cl); cl = NULL; + dev->iamthif_open_count++; file->private_data = &dev->iamthif_cl; client = &data->out_client_properties; |