[PATCH] improve lmk to avoid deadlock issue

Joe Perches joe at perches.com
Thu Jul 30 12:29:17 UTC 2015


On Thu, 2015-07-30 at 13:09 +0300, Dan Carpenter wrote:
> > diff --git a/drivers/staging/android/lowmemorykiller.c b/drivers/staging/android/lowmemorykiller.c
[]
> > @@ -127,11 +127,15 @@ static unsigned long lowmem_scan(struct shrinker *s, struct shrink_control *sc)
> >  		if (!p)
> >  			continue;
> >  
> > -		if (test_tsk_thread_flag(p, TIF_MEMDIE) &&
> > -		    time_before_eq(jiffies, lowmem_deathpending_timeout)) {
> > -			task_unlock(p);
> > -			rcu_read_unlock();
> > -			return 0;
> > +		if (test_tsk_thread_flag(p, TIF_MEMDIE)) {
> > +			if (time_before_eq(jiffies, lowmem_deathpending_timeout)) {
> 
> 5) This goes over the 80 character limit.  Could you break it up like
> this:
> 
> 		if (test_tsk_thread_flag(p, TIF_MEMDIE)) {
> 			if (time_before_eq(jiffies,
> 					   lowmem_deathpending_timeout)) {
> 				task_unlock(p);
> 
> Anyway, thank for this patch.  Please fix these small process issues
> and resend.

Can the task_unlock in each branch be hoisted?

Another way to write this might be to use time_after:

		if (test_tsk_thread_flag(p, TIF_MEMDIE)) {
			task_unlock(p);
			if (time_after(jiffies, lowmem_deathpending_timeout))
				continue;
			rcu_read_unlock();
			return 0;
		}




More information about the devel mailing list