commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=0854ae37bcafc8af421099057f578a525d75bde1 branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/2011R1
Signed-off-by: Steven Miao <[email protected]> Signed-off-by: Sonic Zhang <[email protected]> --- drivers/staging/icc/core/protocol.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/staging/icc/core/protocol.c b/drivers/staging/icc/core/protocol.c index 5455f69..6b99dec 100644 --- a/drivers/staging/icc/core/protocol.c +++ b/drivers/staging/icc/core/protocol.c @@ -794,7 +794,8 @@ static int icc_open(struct inode *inode, struct file *file) { int ret = 0; - + struct sm_session_table *table = icc_info->sessions_table; + table->refcnt++; return ret; } @@ -805,9 +806,12 @@ icc_release(struct inode *inode, struct file *file) struct sm_session_table *table = icc_info->sessions_table; int used; int i; - used = MAX_ENDPOINTS - table->nfree; - for (i = 0; i < used; i++) - sm_free_session(i, table); + table->refcnt--; + if (table->refcnt == 0) { + used = MAX_ENDPOINTS - table->nfree; + for (i = 0; i < used; i++) + 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
