From patchwork Fri Nov 19 11:36:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alejandro Colomar X-Patchwork-Id: 12693120 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 49908C433EF for ; Fri, 19 Nov 2021 11:38:59 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1234760FE3 for ; Fri, 19 Nov 2021 11:38:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 1234760FE3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=mpKzbjma2JqyBwYwluo7lqDqNBjExlPsNaYS0+9fwRo=; b=ywjNI7u2+qhzAD TEwxJ/CXuKzYthIlfncKb8EvAQFE7sRKI+mdlWY+gfCMH7OA6LuKDEYHHQf6W23xjxmeSH2NyRQGl LreCfnDCfHmADsahEeQK84XV/+cwYg0Q5/7ip7V2sfqzBEkdwPDHwuQLWqGZ2UJUxxvzhPQLPpJC3 GPA+dXJmZaUHOMATnPRy37cDcgY1O8RrAgX5V7EaGPwyedUafYopvl+RtOE8FFIVOZmV9k/o5oaus iAEDhwBKvqjMZWi9ncvmKO9NbUidriy7Iv+6JSp9MRITjWh2ml7gOspb/yF1QXcRGcraB9BOkwvJn tmRXy3/PY+YXzXZ5hk1g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mo2Ci-00AH5i-R6; Fri, 19 Nov 2021 11:37:17 +0000 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mo2Cc-00AH3d-Vx for linux-arm-kernel@lists.infradead.org; Fri, 19 Nov 2021 11:37:12 +0000 Received: by mail-wm1-x331.google.com with SMTP id 67-20020a1c1946000000b0030d4c90fa87so7271349wmz.2 for ; Fri, 19 Nov 2021 03:37:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=i/fXbPVRBN7s8r5M3WRHcaBt2UUAnkHDSIE3JuEClQs=; b=LdKaBDoXj5kLikAyAmdIKIT2p/1ZnFNnEoDHrFpvPz7+3Ge8onDjpohtiCMAnlnsiK SBn8bjvzha8CnoksjBka38G2LiNZqnYBv275eAjwpBruCcNX7PYKuRJSnX8RcO5ORT/g l2Ebp7hBv9FRd6DoviS5UaQJN+kUwYCf+cZGSD0dbUhMFVOjR6DfDQGHL+bmpzTYKkAD U2E5MYD17sxdcnjcomWe4oG7wo7H90SpoWYL2I41ybq+DVRU7A/hifhcbTucr7CG5zdC sOxBPibe1UMLSiucWQu3denVSkrZVSS/diEnVBHTo80lgv+7qZffYh7SMRb7wNWX2Iaj qOCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=i/fXbPVRBN7s8r5M3WRHcaBt2UUAnkHDSIE3JuEClQs=; b=QL/fCeIn4Lil+A4ZoYIqF4d7uJ/edb1B1ji1k2Qxqg/uEQsLYlpOcqhJxS+nhZa54H Z4MlBByr3vsuIlLxRmIwHnTZN1r3U6SfsLfDXR7zpiqUw3kLIyuSVP3cFec2VEmNZEK7 POUeuYj91I5YGCLOmbZv2HF4c21t7+V7L8w4FqKg3S7IY4irSlZsaPN+IKphVfQgNZKw ZgzmP4XwrI7e6yS5rJ2YVdSZHbPP4Eyit1oJNCkLMbIuJ1fkeu2bslwxU22exNoEY787 RecPKXMmWFDRJE0QyKpX+JSpKZHcviFeR0aEU9EzkMjS0UqQWN/Se1gPIrnVX4AcZWmB X6+w== X-Gm-Message-State: AOAM5322yrlT3mYfKKLzKMXagnUkJ+ybENATe+SAeLZxls/4LMzJQGtK tLb2UYG0agaPsSzgo5AOJQc= X-Google-Smtp-Source: ABdhPJyJbfoMgk75T8Fyd/k0Splt6ZMCLNuREiyUbadwsKMpXolha/fffbI6cizRQl/wpfUClrVQ4g== X-Received: by 2002:a7b:cd02:: with SMTP id f2mr324816wmj.115.1637321827678; Fri, 19 Nov 2021 03:37:07 -0800 (PST) Received: from ady1.alejandro-colomar.es ([170.253.36.171]) by smtp.googlemail.com with ESMTPSA id f15sm3361260wmg.30.2021.11.19.03.37.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Nov 2021 03:37:07 -0800 (PST) From: Alejandro Colomar To: LKML Cc: Alejandro Colomar , Ajit Khaparde , Andrew Morton , Andy Shevchenko , Arnd Bergmann , Bjorn Andersson , Borislav Petkov , Corey Minyard , Chris Mason , Christian Brauner , David Sterba , Jani Nikula , Jason Wang , Jitendra Bhivare , John Hubbard , "John S . Gruber" , Jonathan Cameron , Joonas Lahtinen , Josef Bacik , Kees Cook , Ketan Mukadam , Len Brown , "Michael S. Tsirkin" , Miguel Ojeda , Mike Rapoport , Nick Desaulniers , "Rafael J. Wysocki" , Rasmus Villemoes , Rodrigo Vivi , Russell King , Somnath Kotur , Sriharsha Basavapatna , Subbu Seetharaman , intel-gfx@lists.freedesktop.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-btrfs@vger.kernel.org, linux-scsi@vger.kernel.org, netdev@vger.kernel.org, virtualization@lists.linux-foundation.org Subject: [PATCH 00/17] Add memberof(), split some headers, and slightly simplify code Date: Fri, 19 Nov 2021 12:36:28 +0100 Message-Id: <20211119113644.1600-1-alx.manpages@gmail.com> X-Mailer: git-send-email 2.33.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211119_033711_069667_AEF087AC X-CRM114-Status: GOOD ( 23.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi all, I simplified some xxxof() macros, by adding a new macro memberof(), which implements a common operation in many of them. I also splitted many of those macros into tiny headers, since I noticed that touching those headers implied recompiling almost the whole kernel. Hopefully after this patch there will be less things to recompile after touching one of those. Having simpler headers means that now one can include one of those without pulling too much stuff that might break other stuff. I removed some unnecessary casts too. Every few commits in this series and of course after the last commit I rebuilt the kernel and run for a while with it without any problems. Please note that I have written very few kernel code and for example some files wouldn't let me include some of these files, so I didn't change those. What I mean is that, even though this is super obvious and shouldn't break stuff, and I'm not new to C, I'm quite new to the kernel, and ask that reviewers take deep look, please. In the first and second commits I changed a lot of stuff in many parts, and that's why I CCd so many people (also in this cover letter). However, to avoid spamming, and since it would be a nightmare to find all the relevant people affected in so many different areas, I only CCd in 01, 02 and in the cover letter. If anyone is interested in reading the full patch set, I sent it to the LKML. Thanks, Alex Alejandro Colomar (17): linux/container_of.h: Add memberof(T, m) Use memberof(T, m) instead of explicit NULL dereference Replace some uses of memberof() by its wrappers linux/memberof.h: Move memberof() to separate header linux/typeof_member.h: Move typeof_member() to a separate header Simplify sizeof(typeof_member()) to sizeof_field() linux/NULL.h: Move NULL to a separate header linux/offsetof.h: Move offsetof(T, m) to a separate header linux/offsetof.h: Implement offsetof() in terms of memberof() linux/container_of.h: Implement container_of_safe() in terms of container_of() linux/container_of.h: Cosmetic linux/container_of.h: Remove unnecessary cast to (void *) linux/sizeof_field.h: Move sizeof_field(T, m) to a separate header include/linux/: Include a smaller header if just for NULL linux/offsetofend.h: Move offsetofend(T, m) to a separate header linux/array_size.h: Move ARRAY_SIZE(arr) to a separate header include/: Include for ARRAY_SIZE() arch/x86/include/asm/bootparam_utils.h | 3 +- arch/x86/kernel/signal_compat.c | 5 ++-- drivers/gpu/drm/i915/i915_sw_fence.c | 1 + drivers/gpu/drm/i915/i915_utils.h | 5 ++-- drivers/gpu/drm/i915/intel_runtime_pm.h | 3 +- drivers/net/ethernet/emulex/benet/be.h | 10 +++---- drivers/net/ethernet/i825xx/ether1.c | 7 +++-- drivers/platform/x86/wmi.c | 3 +- drivers/scsi/be2iscsi/be.h | 12 ++++---- drivers/scsi/be2iscsi/be_cmds.h | 5 +++- fs/btrfs/ctree.h | 5 ++-- fs/proc/inode.c | 1 + include/acpi/actypes.h | 4 ++- include/crypto/internal/blake2b.h | 1 + include/crypto/internal/blake2s.h | 1 + include/crypto/internal/chacha.h | 1 + include/drm/drm_mipi_dbi.h | 1 + include/drm/drm_mode_object.h | 1 + include/kunit/test.h | 1 + include/linux/NULL.h | 10 +++++++ include/linux/arm_ffa.h | 1 + include/linux/array_size.h | 15 ++++++++++ include/linux/blk_types.h | 1 + include/linux/can/core.h | 1 + include/linux/clk-provider.h | 1 + include/linux/container_of.h | 28 ++++++++++------- include/linux/counter.h | 1 + include/linux/crash_core.h | 1 + include/linux/efi.h | 1 + include/linux/extable.h | 2 +- include/linux/f2fs_fs.h | 1 + include/linux/filter.h | 3 ++ include/linux/fs.h | 1 + include/linux/genl_magic_func.h | 1 + include/linux/hashtable.h | 1 + include/linux/ieee80211.h | 1 + include/linux/kbuild.h | 3 ++ include/linux/kernel.h | 7 +---- include/linux/kfifo.h | 1 + include/linux/kvm_host.h | 3 ++ include/linux/libata.h | 1 + include/linux/llist.h | 1 + include/linux/memberof.h | 11 +++++++ include/linux/mlx5/device.h | 1 + include/linux/mlx5/driver.h | 1 + include/linux/mm_types.h | 1 + include/linux/moduleparam.h | 3 ++ include/linux/mtd/rawnand.h | 1 + include/linux/netdevice.h | 1 + include/linux/netfilter.h | 1 + include/linux/nvme-fc.h | 2 ++ include/linux/offsetof.h | 17 +++++++++++ include/linux/offsetofend.h | 19 ++++++++++++ include/linux/pagemap.h | 1 + include/linux/phy.h | 1 + include/linux/phy_led_triggers.h | 1 + include/linux/pinctrl/machine.h | 1 + include/linux/property.h | 1 + include/linux/rcupdate.h | 1 + include/linux/rcupdate_wait.h | 1 + include/linux/regmap.h | 1 + include/linux/sched/task.h | 1 + include/linux/sizeof_field.h | 14 +++++++++ include/linux/skb_array.h | 1 + include/linux/skbuff.h | 1 + include/linux/skmsg.h | 3 ++ include/linux/slab.h | 2 ++ include/linux/spinlock_types.h | 1 + include/linux/stddef.h | 30 +++---------------- include/linux/string.h | 5 +++- include/linux/surface_aggregator/controller.h | 1 + include/linux/surface_aggregator/serial_hub.h | 1 + include/linux/swap.h | 1 + include/linux/ti-emif-sram.h | 1 + include/linux/typeof_member.h | 11 +++++++ include/linux/ucs2_string.h | 2 +- include/linux/vdpa.h | 1 + include/linux/virtio_config.h | 17 ++++++----- include/linux/wireless.h | 2 ++ include/net/bond_3ad.h | 1 + include/net/dsa.h | 1 + include/net/ip_vs.h | 1 + include/net/netfilter/nf_conntrack_tuple.h | 1 + include/net/netfilter/nf_tables.h | 1 + include/net/netlink.h | 1 + include/rdma/uverbs_ioctl.h | 1 + include/rdma/uverbs_named_ioctl.h | 1 + include/scsi/scsi_host.h | 1 + include/sound/soc-dapm.h | 1 + include/sound/soc.h | 1 + include/trace/events/wbt.h | 1 + include/uapi/linux/netfilter/xt_sctp.h | 1 + include/xen/hvm.h | 1 + kernel/kallsyms.c | 3 +- 94 files changed, 255 insertions(+), 79 deletions(-) create mode 100644 include/linux/NULL.h create mode 100644 include/linux/array_size.h create mode 100644 include/linux/memberof.h create mode 100644 include/linux/offsetof.h create mode 100644 include/linux/offsetofend.h create mode 100644 include/linux/sizeof_field.h create mode 100644 include/linux/typeof_member.h