Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp700737pxp; Fri, 11 Mar 2022 12:45:32 -0800 (PST) X-Google-Smtp-Source: ABdhPJx2S5il9FYAyFryK1EDf2L/RmuC5/cF/1FtgP7MDNQU+nOjZs+YJRAPfgrtvHgLteZ7iqb1 X-Received: by 2002:a17:903:228f:b0:151:8379:9438 with SMTP id b15-20020a170903228f00b0015183799438mr12145967plh.51.1647031532242; Fri, 11 Mar 2022 12:45:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1647031532; cv=none; d=google.com; s=arc-20160816; b=wHo6OznLuj8HiMfxNLHlAlHEzjS23pQGqTCA2aVSDRcRpcm9ZfeaqPExCL6Z/1PFOm ultI/ZjMdmw0LnO7TQlFEwYvHSnMjjP2r+HDXcEXOUWnS+Cf0CwVDnNeWN+kCM9Y+bEV cNm5Zxnuh+f4OHOmhLYua6TGeOIrgTwqeXAUm8rEC6okauScB1zlWBa4t28kB1duvoF9 Y0fzrji4z/noapLLo6uxTBRz5JyDL2YK6yWnlqrrA9qVSIaQk5DrJwSRhxRQJidpzBUq 1oQ5aUEEFVQ9MgF2OX4jMXor1ScAM3ZGRgZ8DufLkJW6TOQ5yZhpvqx6zIbT7hGpddzt 7YBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:subject:reply-to:cc:from:to:dkim-signature:date; bh=QwZDFWa+hj+czammg/GqJUDVTdjcC7UxItWq97HZnpU=; b=mF9B56/43IS1FI2EJGtSu09qgpHJ7mMuHo72vX3qP7jcu+eEVVV+YOjgVEQ+WUvyGh Brm0k+uxGpUbPBh66KnqNjDcvjEbwDN3z+txf2tNslPTfpXFgzSTHHUGMR/6Br0YqDzj bgJdr1lBdB0zcERqXNl69c24SRDlsMOfyS8OknhKjLgZt9xh4+15KD12QCjRFZHlje8e K6RIQvgZNnhfJKCt3YKmdWrpupxU9+ha0lXypKgeVnwWTTV0U6BnsElsNiQ+fp9fa2zO EA4k+U/+Nbzo9T0g41zm2Wm0xFHBVnbqGCahGKy3y0VdcyrI/k18D1QUWhbS+OsgXqui SzuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@protonmail.com header.s=protonmail3 header.b=jLuFrzSn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=protonmail.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id u20-20020a17090abb1400b001c218be3cf0si4724150pjr.158.2022.03.11.12.45.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Mar 2022 12:45:32 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@protonmail.com header.s=protonmail3 header.b=jLuFrzSn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=protonmail.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id B2CDB1D7937; Fri, 11 Mar 2022 12:41:57 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345337AbiCKBd6 (ORCPT + 99 others); Thu, 10 Mar 2022 20:33:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345360AbiCKBd5 (ORCPT ); Thu, 10 Mar 2022 20:33:57 -0500 Received: from mail-4316.protonmail.ch (mail-4316.protonmail.ch [185.70.43.16]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB069972E3 for ; Thu, 10 Mar 2022 17:32:52 -0800 (PST) Date: Fri, 11 Mar 2022 01:32:44 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1646962369; bh=QwZDFWa+hj+czammg/GqJUDVTdjcC7UxItWq97HZnpU=; h=Date:To:From:Cc:Reply-To:Subject:Message-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID; b=jLuFrzSniJy7x/BjbxJ7amVd2cSnyzFYiZ0IkOG7FaxP+YWmV+7tHkj447i7HVC18 qCbBIN0+MxBDZWEMDwu/SyyUH6RN4FSFvYCavOE1SExo8vqtyRH6zdSXn4LbtU2sqb 3v+YKkNUenXdiIldxfHKnLIXMxqYk3VIWEUI5sRu4W9Gfp2/QTxHt+rE7Cb8kb8r5R 5+3Ot2/H1tGZrhlg314Ymvzi/ZpTkygeUmqeJFwneIS7r4ZXP9rf1WbHQWoEanvq4H mgd1jPRwF4Kn0dqaSomAGdtasx2weG6WIp8LNPtTqrrTJwJNCuWI3C2wOawY6Og3lW R/z+Maa2+NskQ== To: Linus Torvalds , linux-kernel@vger.kernel.org From: =?utf-8?Q?Barnab=C3=A1s_P=C5=91cze?= Cc: Greg Kroah-Hartman , Andrew Morton , Xiaomeng Tong , Kees Cook , Jakob Koschel , Arnd Bergmann Reply-To: =?utf-8?Q?Barnab=C3=A1s_P=C5=91cze?= Subject: [RFC PATCH v1 0/2] add type-safer list_head wrapper Message-ID: <20220311013238.3387227-1-pobrn@protonmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As there have been various discussions[1][2] about improving the current `list_head` facilities, I would like to propose a type-safe(r), lightweight wrapper: tlist. The first commit goes into details as to how it works, lists some of its advantages and disadvantages. The second commit showcases it in the existing WMI platform driver. NOTE: these changes are mostly untested! They are purely for showcasing a possible implementation and API. And they depend on the switch to gnu11. I would like to get some feedback as to whether/how acceptable this approach is before going further: writing documentation, tests, and adding more wrappers around existing `list_head` facilities (e.g. reverse iteration is not implemented). If this idea has already been proposed, I apologize, I must have missed it when I searched for similar patches. PS. I have tried to select those who may be interested in this discussion, I may have missed people or added people who aren't interested. Sorry. [1]: https://lore.kernel.org/all/20220217184829.1991035-1-jakobkoschel@gmai= l.com/ [2]: https://lore.kernel.org/all/20220301075839.4156-1-xiam0nd.tong@gmail.c= om/ And see https://lwn.net/Articles/887097/ for a summary. Barnab=C3=A1s P=C5=91cze (2): list: add type-safer list_head wrapper platform/x86: wmi: use tlist for WMI blocks drivers/platform/x86/wmi.c | 54 ++++++++++--------------- include/linux/tlist.h | 81 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 33 deletions(-) create mode 100644 include/linux/tlist.h -- 2.35.1