Thread (5 messages) 5 messages, 4 authors, 2009-05-14

Re: [patch 3/9] input: ads7846.c sparse lock annotation

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2009-05-14 03:51:51

On Wed, May 13, 2009 at 08:34:27PM -0700, Harvey Harrison wrote:
On Wed, 2009-05-13 at 20:24 -0700, Dmitry Torokhov wrote:
quoted
On Tue, May 12, 2009 at 01:43:06PM -0700, akpm@linux-foundation.org wrote:
quoted
From: Harvey Harrison <redacted>

Signed-off-by: Harvey Harrison <redacted>
Cc: Dmitry Torokhov <redacted>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
 
 /* Must be called with ts->lock held */
 static void ads7846_disable(struct ads7846 *ts)
+__releases(&ts->lock)
+__acquires(&ts->lock)
 {
I still haven't gotten any explanation why this is needed and also I am
still getting sparce warnings with this patch applied. Please drop.
Sorry, I didn't realize I had a local patchset doing extra context checking
of what lock is passed in to spin_lock/unlock...it helps to document when a
function requires a lock held (see the comment)
I understand the comment ;) The annotation syntax is confusing though...
Maybe if instead of __releases and __acquires it said __needs_lock() and
__leaves_locked() that would make more sense... 
The culprit in this function:
		while (ts->pending) {
			spin_unlock_irq(&ts->lock);
			msleep(1);
			spin_lock_irq(&ts->lock);
		}

Anyways, as current sparse will still warn please drop.

Harvey
-- 
Dmitry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help