[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] xen: rework error handling in vcpu_create
- To: Jan Beulich <jbeulich@xxxxxxxx>
- From: Stewart Hildebrand <stewart.hildebrand@xxxxxxx>
- Date: Tue, 5 Aug 2025 05:06:30 -0400
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=suse.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BbzFTXG6Tdv6VDFdu/L7lY5UwU2AqKK7iKjpcfjzHco=; b=MvAC7xdImvDp13CZ8dVyVq9P1N4bQBYy++TW+l7bJqKcgZu2MoN4MzqArfJXcAGPPtfaYbpcqcRIN8ogty/KoPFLcQyb7yjMyl12Xacdmh9U6cunerhuOBQVOWArGTJ2oB855Esq+MUt2eedeYHG9R4AD5z/daSUrHypdB1J1gdMp/9COWFVZFawiUDtpQVE5wdMxHmNLDi9vIQCmuqYhHhYQ4ei0znxIM96JCg9TjBH1Y+U6PzxsUipazWe/KeFiHTEBHUefmFrZ6KVt1/tJGmMLxQNz+IbJ/2aSKU0+leW/mtoDLUEGz/pYfa+uAM/GeajNzVVvnUQEPKA+zG0cw==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Zf+kM+pHdcSlGEbmUNLR+NjP/jtUUlryw/aWMs55ZTcILKpqBdOdcf2SeDf92D2hO+iAzCE1Sr/i/xHSkfqaUrAuxdaYug2sBQc29upXSGoHviPgyX+PDaMjgekHQtuWYvVOibvezKIwgWO5WFNwZsyl2zb8sXI7CCpMQQv7gu13NgT4zfmcRvF3V710v9MRAPD/oVQ228K46H10F4wUqpW2J6t6UkmP4y8YUTgEb18rPg51FU8evtlVpwgTq5jXp+ojWWfZ+C84+q9aP/7qBwR/AhRVuJNo1Hthglk0/jXTNuPt9R1ui7SghBu0/qq5wQVzmm7dLikgijXBzCtGLA==
- Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, "Julien Grall" <julien@xxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, "Dario Faggioli" <dfaggioli@xxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, "George Dunlap" <gwd@xxxxxxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
- Delivery-date: Tue, 05 Aug 2025 09:06:57 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On 8/5/25 03:44, Jan Beulich wrote:
> On 04.08.2025 18:57, Stewart Hildebrand wrote:
>> On 8/4/25 03:57, Jan Beulich wrote:
>>> On 01.08.2025 22:24, Stewart Hildebrand wrote:
>>>> @@ -839,6 +839,9 @@ void sched_destroy_vcpu(struct vcpu *v)
>>>> {
>>>> struct sched_unit *unit = v->sched_unit;
>>>>
>>>> + if ( !unit )
>>>> + return;
>>>> +
>>>> kill_timer(&v->periodic_timer);
>>>> kill_timer(&v->singleshot_timer);
>>>> kill_timer(&v->poll_timer);
>>>
>>> What if it's the 2nd error path in sched_init_vcpu() that is taken?
^^ This ^^ is what I'm confused about
>>> Then we
>>> might take this path (just out of context here)
>>>
>>> if ( unit->vcpu_list == v )
>>> {
>>> rcu_read_lock(&sched_res_rculock);
>>>
>>> sched_remove_unit(vcpu_scheduler(v), unit);
>>> sched_free_udata(vcpu_scheduler(v), unit->priv);
>>>
>>> and at least Credit1's hook doesn't look to be safe against being passed
>>> NULL.
>>> (Not to speak of the risk of unit->priv being used elsewhere while cleaning
>>> up.)
>>
>>
>> Are you referring to this error path in sched_init_vcpu?
>
> No, given the context I thought it was clear that I was referring to
>
> static void cf_check
> csched_free_udata(const struct scheduler *ops, void *priv)
> {
> struct csched_unit *svc = priv;
>
> BUG_ON( !list_empty(&svc->runq_elem) );
>
> (i.e. particularly this BUG_ON()).
The comment about credit1 was clear
|