diff options
author | Matthias Kaehlcke <matthias.kaehlcke@gmail.com> | 2007-05-08 03:32:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 14:15:16 -0400 |
commit | 635244c59c27d3b22c4523d2a951cf553195a966 (patch) | |
tree | 21e49799d046275f51efdb2a0c03fd3f97074858 /drivers/isdn/hysdn/hysdn_proclog.c | |
parent | 13af68ee335d4d26ef96a133abc94b2ef051be00 (diff) |
fix spinlock usage in hysdn_log_close()
Fix incorrect spinlock use in hysdn_log_close(). The function declared a
spinlock on the stack and used it to 'protect' a shared driver structure.
The patch simply removes the useless code.
Signed-off-by: Matthias Kaehlcke <matthias.kaehlcke@gmail.com>
Cc: Karsten Keil <kkeil@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/isdn/hysdn/hysdn_proclog.c')
-rw-r--r-- | drivers/isdn/hysdn/hysdn_proclog.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/drivers/isdn/hysdn/hysdn_proclog.c b/drivers/isdn/hysdn/hysdn_proclog.c index 4c7dedac0e51..27b3991fb0ec 100644 --- a/drivers/isdn/hysdn/hysdn_proclog.c +++ b/drivers/isdn/hysdn/hysdn_proclog.c | |||
@@ -297,8 +297,6 @@ hysdn_log_close(struct inode *ino, struct file *filep) | |||
297 | struct procdata *pd; | 297 | struct procdata *pd; |
298 | hysdn_card *card; | 298 | hysdn_card *card; |
299 | int retval = 0; | 299 | int retval = 0; |
300 | unsigned long flags; | ||
301 | spinlock_t hysdn_lock = SPIN_LOCK_UNLOCKED; | ||
302 | 300 | ||
303 | lock_kernel(); | 301 | lock_kernel(); |
304 | if ((filep->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_WRITE) { | 302 | if ((filep->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_WRITE) { |
@@ -308,7 +306,6 @@ hysdn_log_close(struct inode *ino, struct file *filep) | |||
308 | /* read access -> log/debug read, mark one further file as closed */ | 306 | /* read access -> log/debug read, mark one further file as closed */ |
309 | 307 | ||
310 | pd = NULL; | 308 | pd = NULL; |
311 | spin_lock_irqsave(&hysdn_lock, flags); | ||
312 | inf = *((struct log_data **) filep->private_data); /* get first log entry */ | 309 | inf = *((struct log_data **) filep->private_data); /* get first log entry */ |
313 | if (inf) | 310 | if (inf) |
314 | pd = (struct procdata *) inf->proc_ctrl; /* still entries there */ | 311 | pd = (struct procdata *) inf->proc_ctrl; /* still entries there */ |
@@ -331,7 +328,6 @@ hysdn_log_close(struct inode *ino, struct file *filep) | |||
331 | inf->usage_cnt--; /* decrement usage count for buffers */ | 328 | inf->usage_cnt--; /* decrement usage count for buffers */ |
332 | inf = inf->next; | 329 | inf = inf->next; |
333 | } | 330 | } |
334 | spin_unlock_irqrestore(&hysdn_lock, flags); | ||
335 | 331 | ||
336 | if (pd) | 332 | if (pd) |
337 | if (pd->if_used <= 0) /* delete buffers if last file closed */ | 333 | if (pd->if_used <= 0) /* delete buffers if last file closed */ |