lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Mon, 16 Sep 2019 10:01:37 -0400
From:   Jes Sorensen <jes.sorensen@...il.com>
To:     minyard@....org
Cc:     openipmi-developer@...ts.sourceforge.net, kernel-team@...com,
        linux-kernel@...r.kernel.org
Subject: Re: [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.

Awesome!

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.

Cheers,
Jes

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ