[lkml]   [2019]   [Sep]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [Openipmi-developer] [PATCH 0/1] Fix race in ipmi timer cleanup
On 9/14/19 9:08 PM, Corey Minyard wrote:
>>> {disable,enable}_si_irq() themselves are racy:
>>> static inline bool disable_si_irq(struct smi_info *smi_info)
>>> {
>>> if ((smi_info->io.irq) && (!smi_info->interrupt_disabled)) {
>>> smi_info->interrupt_disabled = true;
>>> Basically interrupt_disabled need to be atomic here to have any value,
>>> unless you ensure to have a spin lock around every access to it.
>> It needs to be atomic, yes, but I think just adding the spinlock like
>> I suggested will work. You are right, the check for timer_running is
>> not necessary here, and I'm fine with removing it, but there are other
>> issues with interrupt_disabled (as you said) and with memory ordering
>> in the timer case. So even if you remove the timer running check, the
>> lock is still required here.
> It turns out you were right, all that really needs to be done is the
> del_timer_sync(). I've added your patch to my queue.
> Sorry for the trouble.


Sorry I was going to get back and look at it again, but Linux Plumbers
and playing sardine i a tin can got in the way.


 \ /
  Last update: 2019-09-16 16:02    [W:0.090 / U:0.176 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site