On Sat, 2012-03-24 at 20:21 +0400, Anton Vorontsov wrote:
Just wonder how do you see the feature implemented?
=20
Something like this?
=20
#define __ret_cond_locked(l, c) __attribute__((ret_cond_locked(l, c)))
#define __ret_value __attribute__((ret_value))
#define __ret_locked_nonnull(l) __ret_cond_locked(l, __ret_value);
=20
extern struct task_struct *find_lock_task_mm(struct task_struct *p)
__ret_locked_nonnull(&__ret_value->alloc_lock);
Yeah, see the email I just CC'ed you on to linux-sparse.
Basically extend __attribute__((context())) to allow things similar to
what you proposed.