Messages in this thread Patch in this message | | | Date | Fri, 20 Jan 2023 14:38:27 +0100 | From | Sebastian Andrzej Siewior <> | Subject | Re: [PATCH v2] locking/rwbase: Prevent indefinite writer starvation |
| |
On 2023-01-20 13:24:41 [+0000], Mel Gorman wrote: > --- a/kernel/locking/rwbase_rt.c > +++ b/kernel/locking/rwbase_rt.c > @@ -264,12 +291,17 @@ static int __sched rwbase_write_lock(struct rwbase_rt *rwb, > if (__rwbase_write_trylock(rwb)) > break; > > + /* Record timeout when reader bias is ignored. */ > + rwb->waiter_timeout = jiffies + RWBASE_RT_WAIT_TIMEOUT; rwb->waiter_timeout = (jiffies + RWBASE_RT_WAIT_TIMEOUT) | 1;
There is the unlikely case that (jiffies + RWBASE_RT_WAIT_TIMEOUT) = 0 on 32bit where it is not jiffies64.
Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> + > raw_spin_unlock_irqrestore(&rtm->wait_lock, flags); > rwbase_schedule(); > raw_spin_lock_irqsave(&rtm->wait_lock, flags); > > set_current_state(state); > } > + > + rwb->waiter_timeout = 0; > rwbase_restore_current_state(); > trace_contention_end(rwb, 0);
Sebastian
| |