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 6343F38837F for ; Mon, 13 Jul 2026 11:47:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=170.10.129.124 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783943262; cv=pass; b=WiqnAOUp10Tn4vIi1JcclpnZEbujSXALfKFSn3zbAmQgelS5i8v+Uy5BFlPgjBi2G5zg52wdqpcMel3ikYN6EfuQia2spX8MphuTud1bY5r1/W0paFbUWDgUBd2iLiuXzyNkvoKLCXkgFb9h0O7ZIjC0fX97dRvERzkGt8ev7tg= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783943262; c=relaxed/simple; bh=1grgqPSChLN+nEm4wCpWH7sZ0fWPZcWjmeH+RZKIY3M=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=Hc2MCFdqHpul28YzB2crOH12kxiBzQzfmH+V/iR1Qjf/tPMZ57xFoENn+nSK0i+MKh/MHIom2xq+mVeLdQwFbz2uUq0Sflpjq0Mfsmm/sv7WYZ0DdvgpO9udb7eD1MQaN9hedFhKmHv2XF5Xct9NN0fBvkUMWO0bNKwVXtdKKaw= ARC-Authentication-Results:i=2; 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=QtDJXXZs; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=WKB3PYYV; arc=pass 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="QtDJXXZs"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="WKB3PYYV" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783943259; 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: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=aKbDN/EInfIse5H8NhMFX3Wyxnpwkw7NAZOqOtgi1Hc=; b=QtDJXXZsj3HAbWWBIuW+P5BIOLjWMSVMi9oUlQmtt/Hid1m0T/qtQLvBOsazYlasbS3qik 4UMjahbGPg2jPgC+JJLxJ0mai0kY67S1YT7SAhUs+4ILDB/er1HuScHpvzQOCpZcQVfHOX 9gyQsFg8RePNHDEboYKfFKdM5Lmi+Nc= Received: from mail-lj1-f198.google.com (mail-lj1-f198.google.com [209.85.208.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-221-r4YtdCjCMyO1vLv53TOh7g-1; Mon, 13 Jul 2026 07:47:37 -0400 X-MC-Unique: r4YtdCjCMyO1vLv53TOh7g-1 X-Mimecast-MFC-AGG-ID: r4YtdCjCMyO1vLv53TOh7g_1783943256 Received: by mail-lj1-f198.google.com with SMTP id 38308e7fff4ca-39adcede08cso18017861fa.2 for ; Mon, 13 Jul 2026 04:47:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783943256; cv=none; d=google.com; s=arc-20260327; b=gDAfv7jU5SJwl7mcRxwcV08b+Hh6xypwiBKsW9NLxHSgV1ByxiRd23RlPBmeYwKKUR glFrIKIsYMXIRA/ivMUe1jBugll6S72ts60jn53riE7X0JXqAfztPDrP7yFutQAa4VT3 M4WZ9CxqEBkxyLcMTI94TVSyPl23cpmy/klqjj3Oleia0OuPTYiUL9VF5uOOy236NcDc x+igeDYz1UN0O9k2W3IAVDE2Bc4+sYBOroHpU1MKzb6ipKqDTgcE2Mh2rwk2bEQMVxRI 1mMwnwTUs7iAmBgyXD+tg6ObKN/x0vd58CDjmG9tcdNXSqLaxFoUWkTUHYRbgtQgPnf4 x99A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=aKbDN/EInfIse5H8NhMFX3Wyxnpwkw7NAZOqOtgi1Hc=; fh=QDi16xCXhgWURmV7FoKFO7CP+cLgAc6vWDy8K5bTqEI=; b=ME2z4KhVMxqjaJ131o7ZPvB+K53TtAJqF4A9S/0XF49AR/alp4rICfHgvkzBk0vg+U Jtt/52Z1U+XJA5QQHQ4fbi1sRgyORfVi+MxCy5iCcPjsa9pMI3VfWS/Um8K+FyaXIsWX XV6GGho/AvaKs8+rA320A+2jRECbDPtNf7RFx5P2GgRrrPKBmqiNo4qPxs5Pp7qQH/t5 xY9yzkyYzPWikDmvFrUSH7nnTud2HtnbdtZSaiOg6F1/q5miopyp0j2PvrIKpbo/ZPj0 tMIQJ8+/nsIJMDzg6s1OmF5DM5VAEPN8JjQL8kHvTRIhkIDtUNeVem54R7xBYv7CxT8Z X69w==; darn=vger.kernel.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1783943256; x=1784548056; darn=vger.kernel.org; h=content-transfer-encoding:content-type:cc:to:subject:message-id :date:from:in-reply-to:references:mime-version:from:to:cc:subject :date:message-id:reply-to:content-type; bh=aKbDN/EInfIse5H8NhMFX3Wyxnpwkw7NAZOqOtgi1Hc=; b=WKB3PYYVDr0ZckinaerZrIRqcHvQrzgwMPM3y5vQdGSCYqKA4otp5rmj+4Ry8gus7b sIxDx4zlgAGdreYJU88RpuQkslDZC/jwb1FrRdGvIASqRjh8aTu/KZlCTtGiJwkur1K1 Yyph8JVgmfR2aOjehqSqI9WZRmfQm/jbKDdK7URw/L2yxHh66qgPOSlJ3CKmLpoh/YxS txtSfKYFMbQECsgP2aGYWY6+2DbqlP+CB2NnSoqnzlZlKp13HTyXkDT7fcn+8FU7VQmy BCMZAO0ilK49/flEOvjQyTUujbBhwkW8hGlZ3Vb+/gv3Im4/YHZO0Fl8UB1MT5N6s+P3 8DcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783943256; x=1784548056; h=content-transfer-encoding:content-type:cc:to:subject:message-id :date:from:in-reply-to:references:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=aKbDN/EInfIse5H8NhMFX3Wyxnpwkw7NAZOqOtgi1Hc=; b=cL1g1L83kG/1ejkQSkLOrtKsawM15i8lzWLWke25E0Qv1IRJ2U2gW6VPhusWFYJErU Mzi7FpMc/lMPJXXQ8GH/WIgotae0O87C2bwFvymDycxWoLhYZIHCglrxxU3ghpX1VTcV GNaQGMTVE4toedqatoMiQ/rFeWYmhX5/qW1VjxXytS+LeTqa3xEq19Ofru38PFd4j+mc NVOOWEtj6tLyT81D+Q3+3P12yFPXQphxT9o9bq1O4Jok1pRI4lvA4yNdq2XquVc0/vR5 nvvxTCUFVa4MEuILXqdhYUCRdWimcu2h+kdtxCdbRq6OE6sHcZtd+nPLWLhiFTVks3K3 /a0Q== X-Forwarded-Encrypted: i=1; AHgh+RpKIs/rNhnXzGnLH/7SH2jPDV5CbXT59Hakuc3tL/CScfMqKI37n1/s9L4+QbZ9bqrctyqzFPKZlcuC04Q=@vger.kernel.org X-Gm-Message-State: AOJu0YyIBYcs5yO1tB0FcGiAHR/t4kJ50HGAKN4bwGX/8sVQelZJwIE+ ZXlYIgmR2OYdTUTc8NgWIMt9rvRY55C9TilDzU9pn/jMKaLF5rM+AFx3igTFoEe/LhW8LA17Nyv pOEDqWNcfxmBrBeWhztNE5luuTdZJUugi+pVbHhk971NKrRWW+zERhoCplub9EjaacmFXKrs02R reCki6wajRhFwomcHbMCRdew/JmsLhd5iQnMNP9z5u X-Gm-Gg: AfdE7ckJfYFNoxXQkz/jzzEQjRxOHJFUrp9O0a+ZjrLtCdT/QuiCojfvqcU2vzeBhd7 aKiqCkpMV4tn4OwI25kIQi1kYAwfkRAV/QBm0oYhoxTDnffK5w2Gcbw6zAYvEjCEoCZrbby44IV C859UfPb2y5PdeWskRdKzhlcTpojy6J09TnWyxAnVw2iZesISA42IEAG8Ow0JcNSCz X-Received: by 2002:a05:6512:3986:b0:5b1:121e:56c2 with SMTP id 2adb3069b0e04-5b1121e5b3dmr1742681e87.0.1783943256166; Mon, 13 Jul 2026 04:47:36 -0700 (PDT) X-Received: by 2002:a05:6512:3986:b0:5b1:121e:56c2 with SMTP id 2adb3069b0e04-5b1121e5b3dmr1742674e87.0.1783943255801; Mon, 13 Jul 2026 04:47:35 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20260713143534964Cml5-QLfcPMDtbbq_j7tG@zte.com.cn> <20260713143707966lCkTinO0i9zYAc1K2ZmqZ@zte.com.cn> In-Reply-To: <20260713143707966lCkTinO0i9zYAc1K2ZmqZ@zte.com.cn> From: Nico Pache Date: Mon, 13 Jul 2026 05:48:54 -0600 X-Gm-Features: AUfX_mwrBp4ld_acLJa82rvEOqlZRM93ghqOGkbAmWLxGYELjfup9HaqEmDSH64 Message-ID: Subject: Re: [PATCH v2 1/2] mm/mm_slot.h: add a helper function mm_slot_remove To: xu.xin16@zte.com.cn Cc: akpm@linux-foundation.org, david@kernel.org, ljs@kernel.org, ziy@nvidia.com, baolin.wang@linux.alibaba.com, baohua@kernel.org, lance.yang@linux.dev, usama.arif@linux.dev, chengming.zhou@linux.dev, qi.zheng@linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, ryan.roberts@arm.com, dev.jain@arm.com, wang.yaxin@zte.com.cn Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jul 13, 2026 at 12:37=E2=80=AFAM wrote: > > From: xu xin > > Both THP and KSM manage per-mm scanning slots using the mm_slot > structure. The slot is kept in a hash table and a list, and removal from > both containers requires the same two operations: hash_del() and > list_del(). > > Introduce mm_slot_remove() to abstract the common hash_del() + list_del() > sequence used in both khugepaged and KSM. > > No functional change is intended. > > Signed-off-by: xu xin LGTM! Reviewed-by: Nico Pache > --- > mm/khugepaged.c | 6 ++---- > mm/ksm.c | 9 +++------ > mm/mm_slot.h | 5 +++++ > 3 files changed, 10 insertions(+), 10 deletions(-) > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index 58e14d1543ec..5f6eb1bd9a67 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -606,8 +606,7 @@ void __khugepaged_exit(struct mm_struct *mm) > spin_lock(&khugepaged_mm_lock); > slot =3D mm_slot_lookup(mm_slots_hash, mm); > if (slot && khugepaged_scan.mm_slot !=3D slot) { > - hash_del(&slot->hash); > - list_del(&slot->mm_node); > + mm_slot_remove(slot); > free =3D 1; > } > spin_unlock(&khugepaged_mm_lock); > @@ -1802,8 +1801,7 @@ static void collect_mm_slot(struct mm_slot *slot) > > if (collapse_test_exit(mm)) { > /* free mm_slot */ > - hash_del(&slot->hash); > - list_del(&slot->mm_node); > + mm_slot_remove(slot); > > /* > * Not strictly needed because the mm exited already. > diff --git a/mm/ksm.c b/mm/ksm.c > index 2791ce5bd44b..443dab513da6 100644 > --- a/mm/ksm.c > +++ b/mm/ksm.c > @@ -1257,8 +1257,7 @@ static int unmerge_and_remove_all_rmap_items(void) > struct mm_slot, mm_node); > ksm_scan.mm_slot =3D mm_slot_entry(slot, struct ksm_mm_sl= ot, slot); > if (ksm_test_exit(mm)) { > - hash_del(&mm_slot->slot.hash); > - list_del(&mm_slot->slot.mm_node); > + mm_slot_remove(&mm_slot->slot); > spin_unlock(&ksm_mmlist_lock); > > mm_slot_free(mm_slot_cache, mm_slot); > @@ -2772,8 +2771,7 @@ static struct ksm_rmap_item *scan_get_next_rmap_ite= m(struct page **page) > * or when all VM_MERGEABLE areas have been unmapped (and > * mmap_lock then protects against race with MADV_MERGEAB= LE). > */ > - hash_del(&mm_slot->slot.hash); > - list_del(&mm_slot->slot.mm_node); > + mm_slot_remove(&mm_slot->slot); > spin_unlock(&ksm_mmlist_lock); > > mm_slot_free(mm_slot_cache, mm_slot); > @@ -3116,8 +3114,7 @@ void __ksm_exit(struct mm_struct *mm) > if (ksm_scan.mm_slot =3D=3D mm_slot) > goto unlock; > if (!mm_slot->rmap_list) { > - hash_del(&slot->hash); > - list_del(&slot->mm_node); > + mm_slot_remove(slot); > easy_to_free =3D 1; > } else { > list_move(&slot->mm_node, > diff --git a/mm/mm_slot.h b/mm/mm_slot.h > index 83f18ed1c4bd..5de3e91d86b4 100644 > --- a/mm/mm_slot.h > +++ b/mm/mm_slot.h > @@ -52,4 +52,9 @@ static inline void mm_slot_free(struct kmem_cache *cach= e, void *objp) > hash_add(_hashtable, &_mm_slot->hash, (unsigned long)_mm); = \ > }) > > +static inline void mm_slot_remove(struct mm_slot *slot) > +{ > + hash_del(&slot->hash); > + list_del(&slot->mm_node); > +} > #endif /* _LINUX_MM_SLOT_H */ > -- > 2.25.1 >