Jan Beulich
2011-Oct-21 14:00 UTC
[Xen-devel] [PATCH] x86/hpet: fix cpumask allocation after 23990:1c8789852eaf
hpet_fsb_cap_lookup(), if it doesn''t find any FSB capable timer, leaves hpet_events allocated, while hpet_events->cpumask may not have been, As we''re pretty generous with these one-time allocations already (in that hpet_events doesn''t get freed when no usable counters were found, even if in that case only the first array entry [or none at all] may get used), simply make the cpumask allocation in the legacy case independent of whether hpet_events was NULL before. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/hpet.c +++ b/xen/arch/x86/hpet.c @@ -512,15 +512,8 @@ void __init hpet_broadcast_init(void) return; if ( !hpet_events ) - { hpet_events = xzalloc(struct hpet_event_channel); - if ( hpet_events && !zalloc_cpumask_var(&hpet_events->cpumask) ) - { - xfree(hpet_events); - hpet_events = NULL; - } - } - if ( !hpet_events ) + if ( !hpet_events || !zalloc_cpumask_var(&hpet_events->cpumask) ) return; hpet_events->irq = -1; _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Christoph Egger
2011-Oct-24 10:39 UTC
Re: [Xen-devel] [PATCH] x86/hpet: fix cpumask allocation after 23990:1c8789852eaf
On 10/21/11 16:00, Jan Beulich wrote:> hpet_fsb_cap_lookup(), if it doesn''t find any FSB capable timer, leaves > hpet_events allocated, while hpet_events->cpumask may not have been, As > we''re pretty generous with these one-time allocations already (in that > hpet_events doesn''t get freed when no usable counters were found, even > if in that case only the first array entry [or none at all] may get > used), simply make the cpumask allocation in the legacy case > independent of whether hpet_events was NULL before. > > Signed-off-by: Jan Beulich<jbeulich@suse.com>Tested-by: Christoph Egger <Christoph.Egger@amd.com> Acked-by: Christoph Egger <Christoph.Egger@amd.com>> > --- a/xen/arch/x86/hpet.c > +++ b/xen/arch/x86/hpet.c > @@ -512,15 +512,8 @@ void __init hpet_broadcast_init(void) > return; > > if ( !hpet_events ) > - { > hpet_events = xzalloc(struct hpet_event_channel); > - if ( hpet_events&& !zalloc_cpumask_var(&hpet_events->cpumask) ) > - { > - xfree(hpet_events); > - hpet_events = NULL; > - } > - } > - if ( !hpet_events ) > + if ( !hpet_events || !zalloc_cpumask_var(&hpet_events->cpumask) ) > return; > hpet_events->irq = -1; > > >-- ---to satisfy European Law for business letters: Advanced Micro Devices GmbH Einsteinring 24, 85689 Dornach b. Muenchen Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel