All of lore.kernel.org
 help / color / mirror / Atom feed
From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Breno Leitao <leitao@debian.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Chris Li <chrisl@kernel.org>, Kairui Song <kasong@tencent.com>,
	Kemeng Shi <shikemeng@huaweicloud.com>,
	Nhat Pham <nphamcs@gmail.com>, Baoquan He <baoquan.he@linux.dev>,
	Barry Song <baohua@kernel.org>,
	Youngjun Park <youngjun.park@lge.com>,
	Lorenzo Stoakes <ljs@kernel.org>,
	"Liam R. Howlett" <liam@infradead.org>,
	Vlastimil Babka <vbabka@kernel.org>,
	Mike Rapoport <rppt@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	Michal Hocko <mhocko@suse.com>, Jann Horn <jannh@google.com>,
	Pedro Falcato <pfalcato@suse.de>, Hugh Dickins <hughd@google.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Peter Xu <peterx@redhat.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Yosry Ahmed <yosry@kernel.org>,
	Chengming Zhou <chengming.zhou@linux.dev>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@meta.com
Subject: Re: [PATCH 2/3] mm, swap: distinguish a malformed swap entry from a dying device
Date: Tue, 11 Aug 2026 17:36:31 +0200	[thread overview]
Message-ID: <da69545e-4b80-4cd0-8d70-a73023445e9f@kernel.org> (raw)
In-Reply-To: <20260810-swap-v1-2-375ef0767206@debian.org>

On 8/10/26 18:26, Breno Leitao wrote:
> get_swap_device() returns NULL both for an entry that can never name a

"an entry that can never name a slot on any device" is confusing. Can you elaborate?

> slot on any device and for a device that swapoff is taking away. The
> first never becomes valid, the second does, and callers cannot tell
> them apart.
> 
> Return ERR_PTR(-EINVAL) for the two malformed cases and keep NULL for
> swapoff. Callers bail out on failure either way, so switch them to
> IS_ERR_OR_NULL() and clear si where the cleanup path would otherwise
> put an ERR_PTR. No functional change.
> 

[...]

>  	ci = __swap_offset_to_cluster(si, offset);
> @@ -1859,7 +1859,9 @@ void folio_put_swap(struct folio *folio, struct page *page)
>   * Check whether swap entry is valid in the swap device.  If so,
>   * return pointer to swap_info_struct, and keep the swap entry valid
>   * via preventing the swap device from being swapoff, until
> - * put_swap_device() is called.  Otherwise return NULL.
> + * put_swap_device() is called.  Return NULL for an empty entry or a
> + * device that is going away, and ERR_PTR(-EINVAL) if the entry itself
> + * is malformed and can never name a slot on any device.
>   *
>   * Notice that swapoff or swapoff+swapon can still happen before the
>   * percpu_ref_tryget_live() in get_swap_device() or after the
> @@ -1900,12 +1902,13 @@ struct swap_info_struct *get_swap_device(swp_entry_t entry)
>  	return si;
>  bad_nofile:
>  	pr_err_ratelimited("%s: %s%08lx\n", __func__, Bad_file, entry.val);
> +	return ERR_PTR(-EINVAL);
>  out:
>  	return NULL;
>  put_out:
>  	pr_err_ratelimited("%s: %s%08lx\n", __func__, Bad_offset, entry.val);
>  	percpu_ref_put(&si->users);
> -	return NULL;
> +	return ERR_PTR(-EINVAL);
>  }
Is -EINVAL really the logical right return value? Running into bad swap entries
sounds more serious to me than "-EINVAL" :)

-- 
Cheers,

David


  reply	other threads:[~2026-08-11 15:36 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-10 16:26 [PATCH 0/3] mm, swap: don't spin or flood the console on a bad swap entry Breno Leitao
2026-08-10 16:26 ` [PATCH 1/3] mm, swap: ratelimit bad swap entry reports in get_swap_device() Breno Leitao
2026-08-11 15:33   ` David Hildenbrand (Arm)
2026-08-11 16:48     ` Pedro Falcato
2026-08-12 10:37       ` Breno Leitao
2026-08-12 10:58       ` David Hildenbrand (Arm)
2026-08-10 16:26 ` [PATCH 2/3] mm, swap: distinguish a malformed swap entry from a dying device Breno Leitao
2026-08-11 15:36   ` David Hildenbrand (Arm) [this message]
2026-08-12 10:48     ` Breno Leitao
2026-08-12 11:00       ` David Hildenbrand (Arm)
2026-08-12 11:02       ` Pedro Falcato
2026-08-12 11:06         ` David Hildenbrand (Arm)
2026-08-10 16:26 ` [PATCH 3/3] mm: fail the fault on a malformed swap entry instead of retrying it Breno Leitao
2026-08-11 15:38   ` David Hildenbrand (Arm)
2026-08-12 10:50     ` Breno Leitao
2026-08-12 10:59   ` Pedro Falcato
2026-08-12 11:03     ` David Hildenbrand (Arm)
2026-08-10 17:20 ` [PATCH 0/3] mm, swap: don't spin or flood the console on a bad swap entry Andrew Morton
2026-08-12 11:05   ` Breno Leitao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=da69545e-4b80-4cd0-8d70-a73023445e9f@kernel.org \
    --to=david@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=baoquan.he@linux.dev \
    --cc=chengming.zhou@linux.dev \
    --cc=chrisl@kernel.org \
    --cc=hannes@cmpxchg.org \
    --cc=hughd@google.com \
    --cc=jannh@google.com \
    --cc=kasong@tencent.com \
    --cc=kernel-team@meta.com \
    --cc=leitao@debian.org \
    --cc=liam@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=mhocko@suse.com \
    --cc=nphamcs@gmail.com \
    --cc=peterx@redhat.com \
    --cc=pfalcato@suse.de \
    --cc=rppt@kernel.org \
    --cc=shikemeng@huaweicloud.com \
    --cc=surenb@google.com \
    --cc=vbabka@kernel.org \
    --cc=yosry@kernel.org \
    --cc=youngjun.park@lge.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.