|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 03/16] xen: sched: make implementing .alloc_pdata optional
>>> On 01.04.16 at 19:01, <dario.faggioli@xxxxxxxxxx> wrote:
> On Mon, 2016-03-21 at 09:07 -0600, Jan Beulich wrote:
>> > > > On 21.03.16 at 15:48, <JGross@xxxxxxxx> wrote:
>> > On 18/03/16 20:04, Dario Faggioli wrote:
>> > > @@ -1491,9 +1491,9 @@ static int cpu_schedule_up(unsigned int
>> > > cpu)
>> > > if ( idle_vcpu[cpu] == NULL )
>> > > return -ENOMEM;
>> > >
>> > > - if ( (ops.alloc_pdata != NULL) &&
>> > > - ((sd->sched_priv = ops.alloc_pdata(&ops, cpu)) == NULL)
>> > > )
>> > > - return -ENOMEM;
>> > > + sd->sched_priv = SCHED_OP(&ops, alloc_pdata, cpu);
>> > > + if ( IS_ERR(sd->sched_priv) )
>> > > + return PTR_ERR(sd->sched_priv);
>> > Calling xfree() with an IS_ERR() value might be a bad idea.
>> > Either you need to set sd->sched_priv to NULL in error case or you
>> > modify xfree() to return immediately not only in the NULL case, but
>> > in the IS_ERR() case as well.
>> The latter option is a no-go imo.
>>
> Ok, I'll do:
>
> sd->sched_priv = SCHED_OP(&ops, alloc_pdata, cpu);
> if ( IS_ERR(sd->sched_priv) )
> {
> int err = PTR_ERR(sd->sched_priv);
>
> sd->sched_priv = NULL;
> return err;
> }
>
> Is this ok?
Depends: Can ->sched_priv be looked at by another CPU between
the first and second assignments? If yes, you need to use an
intermediary local variable.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |