commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=1a44987eef5e44f41dc72e645c2b2f74f689d60b branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk
Signed-off-by: Steven Miao <[email protected]> --- drivers/staging/icc/core/protocol.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/staging/icc/core/protocol.c b/drivers/staging/icc/core/protocol.c index b1e134d..1f2951e 100644 --- a/drivers/staging/icc/core/protocol.c +++ b/drivers/staging/icc/core/protocol.c @@ -119,10 +119,13 @@ static sm_uint32_t sm_alloc_session(struct sm_session_table *table) static int sm_free_session(sm_uint32_t slot, struct sm_session_table *table) { - memset(&table->sessions[slot], 0, sizeof(struct sm_session)); - __clear_bit((int)slot, (unsigned long *)table->bits); - table->nfree++; - return 0; + if (test_bit((int)slot, (unsigned long *)table->bits)) { + memset(&table->sessions[slot], 0, sizeof(struct sm_session)); + __clear_bit((int)slot, (unsigned long *)table->bits); + table->nfree++; + return 0; + } + return -1; } static int @@ -813,7 +816,6 @@ icc_release(struct inode *inode, struct file *file) sm_free_session(i, table); } - WARN_ON(table->nfree != MAX_ENDPOINTS); return ret; }
_______________________________________________ Linux-kernel-commits mailing list [email protected] https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits
