From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6193D3C1992 for ; Wed, 20 May 2026 22:23:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779315782; cv=none; b=DQxIKYPt46wW25V+eZpi0jmLts+hWaGrbFoTLJ3mveX49+iH0q02/vBXlzPKtd0Imb5CuOaTGjdP46hSNQVeT5SOq47XHWB+UfLvHCzrDO4wn2HUhOnb1EUyRGFRtp+uLu7VJG5YtLq7EHbah/cas1HCPLTnw6gQiOVbof9q5pU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779315782; c=relaxed/simple; bh=b3DH92jukQeNkUO526fVTXypKGZyggM7uuOadXDZMdI=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=WJUPJkviWgBQV7ogKZ4VMt+IOMeu9ZyKX3THsyzammGa1d7Og+DreBlqth+wUKR9CqpwQ0ZnXVxQsEJ0F3SV6ZmJf7YPjieOy0H9WEl5cpM/oWb7J+tS6xLThT+YmmKKWj5syr3V3q+aVuSQMaqhksoMbB/qvYLOd6Otex8+KWQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=a2/5yx4z; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=jGpnlgnu; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="a2/5yx4z"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="jGpnlgnu" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1779315780; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=FmUnWEHUs3R8Yu/59LXfqjcAZ9F41NBb5tClVv8g9W0=; b=a2/5yx4zv9yQKy0uxf7IbsUHCCUgVapn4KMQo/9eRbD5iMD2vVZ+3G/C44AZPk3HTcRURk kIfvTby3PAqWIJU+D4bWe0GsTyo7B5R5CnZwRU5RhZT2mD5tAuGNrllzD1NvkB2cKALdxA gSBgAQU5Z661tg6MtST6U6XTtyWbkng= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-561-64SSNv9eOsCytBBSHrWleQ-1; Wed, 20 May 2026 18:22:59 -0400 X-MC-Unique: 64SSNv9eOsCytBBSHrWleQ-1 X-Mimecast-MFC-AGG-ID: 64SSNv9eOsCytBBSHrWleQ_1779315778 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-48a589c7879so41307995e9.1 for ; Wed, 20 May 2026 15:22:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1779315778; x=1779920578; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=FmUnWEHUs3R8Yu/59LXfqjcAZ9F41NBb5tClVv8g9W0=; b=jGpnlgnum5PocuB5qDxe1gJiPjmFfLHghFJ7tOmdvm6Ui/rwBpS1DsBvOd125JAXKg wlLzfnOGmZ2qFAs0Q8l0mGEwaNLIzWU4qN12bNDOC50NZ+RpAcbR+dRrqgOXzU4dX3oT J7jEIPi+jHh3Aoz37OZZu/lWmoO152DQj60wFIJ7Wd2YE9pQAmFmO2UecGIPi7dmKbxv 4yigd4HJqTfkhvsMmPmtY69pJk4/LhM83j0zxa4vju4a5mcqGsgZsER6I897VC/u03DA ScyLyme+u2Z92tAj1qR9iOKlgfrgO2GWvKJ6BtE4b4TBeAT2GoZqytYynAprHCtjSQbz iwng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779315778; x=1779920578; h=in-reply-to: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=FmUnWEHUs3R8Yu/59LXfqjcAZ9F41NBb5tClVv8g9W0=; b=sYRBqVKf2ODSfey0Qz9WErTpMH5wolSjwiyAilNXxrv6K/wfLi4eU9It3GQkcJHzzK KLuuUpHb/Xh8LLRW/8i6MJDCDOZ+Ht+cyFu+HoRFIeThMa5AmidukCr2PtpGI/MHjusZ 9c5d3j97UEBOtfQ4hzh1wrMykMt9QoNXZtDoUfv/LU1M5zdcRXoVMxrZb4fnUC8TKGjR pulw6aFxykGf2qoG39Tvb7JBSAATR2NE5eI3Qcmqsk5lkFpEsuRIFaslE6UU6vW2XKzk YBJLZNQB/4UxkU9D/fgCPLJZQwiFn8jqeJnzcy+10J8rOpZILu/dEKvjYxy8WxRaKo1m DsKw== X-Gm-Message-State: AOJu0YyuphVQHEnn6ECyxgkIUPtvXj4zCtZ9BQuaLgPf7oIXVCGCHs9h mFi7R8uCXE5hJ+DuMXWd6BgjSNqVdJ2eD21rhoSIalZaiEbpI+QqAC7RpTqvTBLGVeLf9MEuED0 V/dXOJly3w3w0r3VZVchv9oOCvwD3goUQNyexQnxbc7YlDWHto87OGVky3xyyvpN002Qu8OJE2C ZO0Hd/uiZQ5+rvrU+uTS9U+UEUD0yBaQFaAb0dhx1FUI4= X-Gm-Gg: Acq92OFHDkfuy8q+PNoafOjxtdBve0bfBZeW+Ya6qnnC3N3Q2/NH7ApRWQcV/iChMDp vUIuzAgkmciy5V3FwNly0AP45EJ8N51+5vQg76J7MU8N70YJ3FeYedfW/S55FuaDG7v9oEf2+Qx ZoPtVPWaLVpNvmlibkYS1kpucX7Pv5LEzGK4088patu45UfjG19fnSA697NtilFI6ztBiVEVp5P poSPORv7bY1e7D6n4ogqHlDV4ixJK3/vrdLSB9nrCyCCn6/Fi5lKJ8gGFEbkkXuzkLOeO517S4y E4B27Al5c7TzRF9NH9q1Bs4r51uekgf3HG0MnA4IscvydAojl+Zi+HUgMjWTcR+X5RujX6in8JJ kPtY7oilqjEi4ClYQqmsg0pIDtVnAWOQT119V/F6fG1I= X-Received: by 2002:a05:600d:8496:20b0:48f:e230:29f4 with SMTP id 5b1f17b1804b1-490360dc195mr1175415e9.15.1779315777862; Wed, 20 May 2026 15:22:57 -0700 (PDT) X-Received: by 2002:a05:600d:8496:20b0:48f:e230:29f4 with SMTP id 5b1f17b1804b1-490360dc195mr1174845e9.15.1779315777370; Wed, 20 May 2026 15:22:57 -0700 (PDT) Received: from redhat.com (IGLD-80-230-25-45.inter.net.il. [80.230.25.45]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49033d3514esm23238795e9.3.2026.05.20.15.22.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 May 2026 15:22:56 -0700 (PDT) Date: Wed, 20 May 2026 18:22:52 -0400 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: "David Hildenbrand (Arm)" , Jason Wang , Xuan Zhuo , Eugenio =?utf-8?B?UMOpcmV6?= , Muchun Song , Oscar Salvador , Andrew Morton , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Brendan Jackman , Johannes Weiner , Zi Yan , Baolin Wang , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Hugh Dickins , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Christoph Lameter , David Rientjes , Roman Gushchin , Harry Yoo , Axel Rasmussen , Yuanchu Xie , Wei Xu , Chris Li , Kairui Song , Kemeng Shi , Nhat Pham , Baoquan He , virtualization@lists.linux.dev, linux-mm@kvack.org, Andrea Arcangeli Subject: [PATCH v8 28/37] virtio_balloon: disable indirect descriptors Message-ID: <83beaef00179365fc6418a5d0aa4fa649d926834.1779315441.git.mst@redhat.com> References: 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=us-ascii Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Balloon submits at most 1-2 scatter-gather entries per buffer and virtqueue sizes are 128+, so indirect descriptors are unnecessary. Disabling them avoids a GFP_KERNEL allocation inside virtqueue_add_sgs when VIRTIO_RING_F_INDIRECT_DESC is negotiated. This allocation could trigger OOM reclaim while balloon_lock is held, leading to a deadlock: OOM notifier -> leak_balloon -> balloon_lock. With single-buffer submissions (previous patch) and no indirect descriptors, virtqueue_add never allocates memory. Signed-off-by: Michael S. Tsirkin Assisted-by: Claude:claude-opus-4-6 --- drivers/virtio/virtio_balloon.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 53b4a3984e7d..1fa1c7fa285f 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -7,6 +7,7 @@ */ #include +#include #include #include #include @@ -1175,6 +1176,13 @@ static int virtballoon_validate(struct virtio_device *vdev) else if (!virtio_has_feature(vdev, VIRTIO_BALLOON_F_PAGE_POISON)) __virtio_clear_bit(vdev, VIRTIO_BALLOON_F_REPORTING); + /* + * Balloon submits 1-2 sg entries max per buffer, virtqueue + * sizes are 128+. Disable indirect descriptors to avoid + * GFP_KERNEL allocation in virtqueue_add under balloon_lock, + * which could deadlock via OOM -> oom_notify -> leak_balloon. + */ + __virtio_clear_bit(vdev, VIRTIO_RING_F_INDIRECT_DESC); __virtio_clear_bit(vdev, VIRTIO_F_ACCESS_PLATFORM); return 0; } -- MST