From: "Srivatsa S. Bhat" <srivatsa.bhat@linux.vnet.ibm.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: Borislav Petkov <bp@amd64.org>,
mingo@elte.hu, tglx@linutronix.de, linux-kernel@vger.kernel.org,
hpa@zytor.com
Subject: Re: [PATCH] x86: fix error paths in microcode_init()
Date: Fri, 02 Dec 2011 20:45:09 +0530 [thread overview]
Message-ID: <4ED8EB7D.5070802@linux.vnet.ibm.com> (raw)
In-Reply-To: <4ED8F46E0200007800065178@nat28.tlf.novell.com>
On 12/02/2011 08:23 PM, Jan Beulich wrote:
>>>> On 02.12.11 at 15:35, Borislav Petkov <bp@amd64.org> wrote:
>> Hi,
>>
>> On Fri, Dec 02, 2011 at 01:35:19PM +0000, Jan Beulich wrote:
>>> After failure of platform_device_register_simple(), microcode_dev_exit()
>>> got called without the call to microcode_dev_init() already having taken
>>> place.
>>>
>>> After failure of microcode_dev_init(), no cleanup of previously carried
>>> out setup was done at all.
>>>
>>> As a result, microcode_dev_exit() can now get __exit tagged on it.
>>>
>>> (Noticed while looking at the code, not because of having experienced
>>> an actual problem.)
>>>
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>
>>> ---
>>> arch/x86/kernel/microcode_core.c | 18 +++++++++++++-----
>>> 1 file changed, 13 insertions(+), 5 deletions(-)
>>>
>>> --- 3.2-rc4/arch/x86/kernel/microcode_core.c
>>> +++ 3.2-rc4-x86-ucode-init-eh/arch/x86/kernel/microcode_core.c
>>> @@ -256,7 +256,7 @@ static int __init microcode_dev_init(voi
>>> return 0;
>>> }
>>>
>>> -static void microcode_dev_exit(void)
>>> +static void __exit microcode_dev_exit(void)
>>> {
>>> misc_deregister(µcode_dev);
>>> }
>>> @@ -519,10 +519,8 @@ static int __init microcode_init(void)
>>>
>>> microcode_pdev = platform_device_register_simple("microcode", -1,
>>> NULL, 0);
>>> - if (IS_ERR(microcode_pdev)) {
>>> - microcode_dev_exit();
>>> + if (IS_ERR(microcode_pdev))
>>> return PTR_ERR(microcode_pdev);
>>> - }
>>>
>>> get_online_cpus();
>>> mutex_lock(µcode_mutex);
>>> @@ -538,8 +536,18 @@ static int __init microcode_init(void)
>>> }
>>>
>>> error = microcode_dev_init();
>>> - if (error)
>>> + if (error) {
>>> + get_online_cpus();
>>> + mutex_lock(µcode_mutex);
>>> +
>>> + sysdev_driver_unregister(&cpu_sysdev_class, &mc_sysdev_driver);
>>> +
>>> + mutex_unlock(µcode_mutex);
>>> + put_online_cpus();
>>> +
>>> + platform_device_unregister(microcode_pdev);
>>> return error;
>>> + }
>>
>> Actually, Srivatsa made a similar patch already which I sent to x86
>> guys (I don't think they've pulled yet) but yours is additionally more
>> careful to do proper locking before doing sysdev_driver_unregister().
>>
>> Would you like to add that part ontop of Srivatsa's patch at the
>> out_sysdev_driver label and resend?
>
> Why shouldn't this one be taken in its entirety instead?
>
Link to my patch: https://lkml.org/lkml/2011/11/7/136
Your patch fixes the issue more properly than mine, but adding your part
on top of my patch makes the code look better. For example,
platform_device_unregister() wouldn't need to be called twice; and we
can use the quite popular way of handling error path via goto statements,
which makes the code flow much more comprehensible and intuitive.
[Btw, in addition to that, since Boris has already asked Ingo to pull my
patch, perhaps it also makes it easier that way. But I definitely see a
plus point in putting your part on top of mine, for code clarity reasons.]
Regards,
Srivatsa S. Bhat
IBM Linux Technology Center
next prev parent reply other threads:[~2011-12-02 15:15 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-07 12:35 [PATCH] x86 Microcode: Fix the failure path of microcode update driver init code Srivatsa S. Bhat
2011-11-07 18:02 ` Borislav Petkov
2011-12-02 13:35 ` [PATCH] x86: fix error paths in microcode_init() Jan Beulich
2011-12-02 14:35 ` Borislav Petkov
2011-12-02 14:53 ` Jan Beulich
2011-12-02 15:15 ` Srivatsa S. Bhat [this message]
2011-12-02 15:24 ` Borislav Petkov
2011-12-02 15:33 ` Jan Beulich
2011-12-02 16:40 ` Srivatsa S. Bhat
2011-12-02 16:45 ` Jan Beulich
2011-12-02 16:51 ` Srivatsa S. Bhat
2011-12-02 19:45 ` Borislav Petkov
2011-12-02 20:00 ` Srivatsa S. Bhat
2011-12-05 17:39 ` [tip:x86/urgent] x86, microcode: Fix the failure path of microcode update driver init code tip-bot for Srivatsa S. Bhat
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4ED8EB7D.5070802@linux.vnet.ibm.com \
--to=srivatsa.bhat@linux.vnet.ibm.com \
--cc=JBeulich@suse.com \
--cc=bp@amd64.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.