From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F556372EE0 for ; Tue, 26 May 2026 07:50:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779781820; cv=none; b=R3kSwMwlzsaXF0KhdmgY9F6uVrxMlUJX/rv/NYXw1rZQhfs9YMMyTo7JSLawR+40Law4btokUHfQU+CC6i4JskJQ032OjpJaX6Sj/UPWy6pHDkeUSKwVEkC/qK+tkjlBRRyDuIaN0w7+IcPTREsctH2+MjfRE152SEfn5YMGTDc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779781820; c=relaxed/simple; bh=H+d/gw78OSltYmE5uWuhr+U/ZuJFwGSvSN/5wm9fSDk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=aXKniOJo1cxaz9KV6BzjnY6gmxnyxkpQTPrOrUb1i3dLy60eMz5C5IVDg7d1+TPaZ8Fp6qLWRSM6R8Rpm/HiNfPHI8jBWDqb0gTKh07TxwwBpqzuRIQiXvz8Nn96PnRFAJXoTtasCDs2VBR9QMj8AcN+8TK6zl91sTclZlzc004= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=IxrxogM6; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="IxrxogM6" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4891b4934ffso15e9.0 for ; Tue, 26 May 2026 00:50:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1779781818; x=1780386618; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=lZV+VCMUCy52tuI2qmm/aDP+m+/9nKTduvdWfC/7mhI=; b=IxrxogM6pF3PK3vL2HmkWsGI5yEpaeBDCHucj+2lJldDiQt7SPdMMzKABpXCBXeTOy tx2vLv1wvmaUpEn+1XygVNgz+pIw1cBjWhE0pYYeZQkr7V2qSy3l20iI085Ot9wRZrYD rsbTYMjiA6tsoxLNih5E/c1G/v05E3vEGUF8B98MEEMnGF8ZYLDKNg8EMB072lrANxXq rOVF9tJNdwBEWXXUaZobHugWx83Sk/whD6FsYx/p2d1+jp++kBjmv8CJ4w5+tQojcUdO 0JQRFJF8naLUtzryqqSi6L5iHTyjGTW1J8MkthVa8BbEzsexc9D7gR7v8Ios81Ocy+H6 GDlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779781818; x=1780386618; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=lZV+VCMUCy52tuI2qmm/aDP+m+/9nKTduvdWfC/7mhI=; b=LlDel6mla2ZecV8u5b+2bpSeXOqXXeyt765Mq8sc3JuR058Cp3Qc7A+ezSX8OGMCI5 0yNgzOhNFaUv/vbgnDub5RFpYw5MgtROvebqGZ9aGmD6NDN5Bn17WIIjHFbzyP2Smdec c6Iz3INdZOifi1eHSkt8Uu2tb2X79eRr7Yd4lBUCEJq1DTL48jSpds+ffpKSfwX5aN+j zxdZQeAk0mDEnfFMXI/KoPJn/d27inE+iud6pk63Frz/ZVkv8yYBg3g5Z/UHG5umXcwn stAIcnC7RNlVCOcWYzklYwB4q+MDSaD+F72NLlQq2NzAOXqaUOfF/beO+3DQvVl/TaYP KHIg== X-Forwarded-Encrypted: i=1; AFNElJ9f27eKEApV3XpemFjOOSItmW3r0HRSfBZUjMKd2Dky59dqF9lt31ku6O0CH0YeVn7sde4BqzjYhnoH5k0=@vger.kernel.org X-Gm-Message-State: AOJu0YxmdO78ABx4cqLjMBzmjUyM9AE+XZ9doYuOuHbpco6loZmAE9NH MoC+744WnbNFHsoHs9Xlq9FxfusJAdltcNwHit52pbZ1YC1HXPrFHTBkF0gOCobxTQ== X-Gm-Gg: Acq92OH3JDG4eTH0TA/f6kpY8hFigPOO9OziKQl+9nY2dRuFwA5YPNLgNYm+Fi16LX1 yZXN3/GNUQPrBto/oV+bLNIqgQH/lA6SHYEQNEewZEiS7snVypDIsFx8M/8hBrvZ698gyVbVEwz B06ZJxqOIBROvCOK+VLDhoXm12z4aaevN/4ms8/VOVv9IjI5gRUezc6ZVnl2v1YaQyGEaMkZDhL k4T5+NqFk70Bkv4LnGjG8uS/tjirdIdhejIXZJOHaj8YF9Iundhn7RnYYpLh3gi7bFL08veKQkI fPusKdnFlIeWJaob6IubbwnvGSL+zE/fdt5ZqbGrruMvEMhkZuYZHNqafrLjdr9RsNA+b35yJYj twLvw15ikX1xc//bJSuqJahgHoDDnR17Zjnmg66GG+eslNuSPcLQ6R1hyttzqxrL17XD2T9xL9I Qg3mfbpkn2mlwEkSs4fiQkjXPGJUPkISsD5re4ZjTfXchXTdEm8XQsA0gPETz6xaiNGoJdSlK4a FQ= X-Received: by 2002:a05:600c:a313:b0:489:1bbb:3356 with SMTP id 5b1f17b1804b1-4904f68f399mr2720555e9.2.1779781817275; Tue, 26 May 2026 00:50:17 -0700 (PDT) Received: from google.com (136.41.155.104.bc.googleusercontent.com. [104.155.41.136]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490454db285sm282079495e9.5.2026.05.26.00.50.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 May 2026 00:50:16 -0700 (PDT) Date: Tue, 26 May 2026 07:50:13 +0000 From: Mostafa Saleh To: Marc Zyngier Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, tglx@kernel.org Subject: Re: [PATCH] irqchip/gic-v4: Harden against bogus command line Message-ID: References: <20260521130503.4103369-1-smostafa@google.com> <86zf1qv4do.wl-maz@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <86zf1qv4do.wl-maz@kernel.org> On Sat, May 23, 2026 at 10:53:23AM +0100, Marc Zyngier wrote: > On Thu, 21 May 2026 14:05:03 +0100, > Mostafa Saleh wrote: > > > > When accidentally setting “kvm-arm.vgic_v4_enable=1” on the wrong > > setup that has no MSI controller device tree node (it exists but > > not used) and GICv4, it caused a panic as “gic_domain” is NULL and > > the kernel attempted to access its ops. > > When you say "that has no MSI controller device tree node", does it > mean that the ITS has not been probed at all? Yes. > > > > > Originally, I hit this on an older kernel, but was able to reproduce > > it on upstream with Qemu by hacking this unreasonable setup. > > > > [ 33.145536] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000028 > > [ 33.145658] Mem abort info: > > [ 33.145751] ESR = 0x0000000096000006 > > ... > > [ 33.154057] CPU: 1 UID: 0 PID: 295 Comm: lkvm-static Not tainted 7.1.0-rc4-ge3f15ad3970e #5 PREEMPT > > [ 33.156922] Hardware name: linux,dummy-virt (DT) > > [ 33.158780] pstate: 81402005 (Nzcv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--) > > [ 33.160340] pc : __irq_domain_instantiate+0x1d4/0x578 > > [ 33.162602] lr : __irq_domain_instantiate+0x1cc/0x578 > > > > Add a hardening check to avoid the NULL access, and fail the VM > > creation in that case. > > > > Signed-off-by: Mostafa Saleh > > --- > > drivers/irqchip/irq-gic-v4.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/irqchip/irq-gic-v4.c b/drivers/irqchip/irq-gic-v4.c > > index 8455b4a5fbb0..7e39f7eae85f 100644 > > --- a/drivers/irqchip/irq-gic-v4.c > > +++ b/drivers/irqchip/irq-gic-v4.c > > @@ -159,6 +159,9 @@ int its_alloc_vcpu_irqs(struct its_vm *vm) > > { > > int vpe_base_irq, i; > > > > + if (!gic_domain) > > + return -EINVAL; > > + > > vm->fwnode = irq_domain_alloc_named_id_fwnode("GICv4-vpe", > > task_pid_nr(current)); > > if (!vm->fwnode) > > I think this check is a good few levels too late. If you want to fix > this, I'd rather make sure that kvm_vgic_global_state.has_gicv4 is > reliable and covers this case. Which means making sure that > gic_kvm_info::has_v4 is itself reliable. > > If my above understanding is correct, I'd expect the following > (untested) hack to help. Thanks! That also fixes the crash, the VM will launch with a vGIC with no ITS in that case. Thanks, Mostafa > > Thanks, > > M. > > diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c > index 291d7668cc8da..e6b9fee1b6786 100644 > --- a/drivers/irqchip/irq-gic-v3-its.c > +++ b/drivers/irqchip/irq-gic-v3-its.c > @@ -5838,6 +5838,7 @@ int __init its_init(struct fwnode_handle *handle, struct rdists *rdists, > > if (list_empty(&its_nodes)) { > pr_warn("ITS: No ITS available, not enabling LPIs\n"); > + rdists->has_vlpis = false; > return -ENXIO; > } > > > -- > Without deviation from the norm, progress is not possible.