Kernel for Galaxy S24, rebased on CLO sources (WIP)
Go to file
Jann Horn 174bcb2711 firmware_loader: Block path traversal
commit f0e5311aa8022107d63c54e2f03684ec097d1394 upstream.

Most firmware names are hardcoded strings, or are constructed from fairly
constrained format strings where the dynamic parts are just some hex
numbers or such.

However, there are a couple codepaths in the kernel where firmware file
names contain string components that are passed through from a device or
semi-privileged userspace; the ones I could find (not counting interfaces
that require root privileges) are:

 - lpfc_sli4_request_firmware_update() seems to construct the firmware
   filename from "ModelName", a string that was previously parsed out of
   some descriptor ("Vital Product Data") in lpfc_fill_vpd()
 - nfp_net_fw_find() seems to construct a firmware filename from a model
   name coming from nfp_hwinfo_lookup(pf->hwinfo, "nffw.partno"), which I
   think parses some descriptor that was read from the device.
   (But this case likely isn't exploitable because the format string looks
   like "netronome/nic_%s", and there shouldn't be any *folders* starting
   with "netronome/nic_". The previous case was different because there,
   the "%s" is *at the start* of the format string.)
 - module_flash_fw_schedule() is reachable from the
   ETHTOOL_MSG_MODULE_FW_FLASH_ACT netlink command, which is marked as
   GENL_UNS_ADMIN_PERM (meaning CAP_NET_ADMIN inside a user namespace is
   enough to pass the privilege check), and takes a userspace-provided
   firmware name.
   (But I think to reach this case, you need to have CAP_NET_ADMIN over a
   network namespace that a special kind of ethernet device is mapped into,
   so I think this is not a viable attack path in practice.)

Fix it by rejecting any firmware names containing ".." path components.

For what it's worth, I went looking and haven't found any USB device
drivers that use the firmware loader dangerously.

Cc: stable@vger.kernel.org
Reviewed-by: Danilo Krummrich <dakr@kernel.org>
Fixes: abb139e75c ("firmware: teach the kernel to load firmware files directly from the filesystem")
Signed-off-by: Jann Horn <jannh@google.com>
Acked-by: Luis Chamberlain <mcgrof@kernel.org>
Link: https://lore.kernel.org/r/20240828-firmware-traversal-v3-1-c76529c63b5f@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-01-26 16:23:01 +09:00
android Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
arch e1q: sync samsung source 2025-01-15 18:04:05 +09:00
block Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
certs Merge keystone/android14-6.1-keystone-qcom-release.6.1.11 (b28061a) into msm-pineapple 2023-02-21 23:31:55 -08:00
crypto Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
Documentation Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
drivers firmware_loader: Block path traversal 2025-01-26 16:23:01 +09:00
fs Revert "f2fs: fix to tag gcing flag on page during block migration" 2024-06-19 03:00:11 +00:00
include Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
init Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
io_uring Merge 6.1.78 into android14-6.1-lts 2024-04-19 12:19:39 +00:00
ipc ipc: fix memory leak in init_mqueue_fs() 2022-12-31 13:32:01 +01:00
kernel Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
lib Merge 6.1.77 into android14-6.1-lts 2024-04-17 08:34:35 +00:00
LICENSES LICENSES/LGPL-2.1: Add LGPL-2.1-or-later as valid identifiers 2021-12-16 14:33:10 +01:00
mm Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
net cfg80211: Make core regdb optional 2025-01-09 16:59:47 +09:00
rust rust: allocator: Prevent mis-aligned allocation 2023-08-11 12:08:18 +02:00
samples Merge 6.1.60 into android14-6.1-lts 2023-11-03 16:23:47 +00:00
scripts Fix clang 19 issues 2024-12-25 17:54:26 +01:00
security Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
sound Import S928BXXU3AXH7 changes 2024-10-20 20:09:27 +02:00
stm_iio_configs drivers:iio:stm:imu:st_ism330is: add ST MEMS IMU ISM330IS sensor support 2023-12-18 22:02:08 +01:00
stm_iio_patches stm: move kernel 6.1.y stm patches out of WIP stage 2023-10-12 18:09:37 +02:00
tools selftests: breakpoints: use remaining time to check if suspend succeed 2025-01-10 17:34:38 +09:00
usr usr/gen_init_cpio.c: remove unnecessary -1 values from int file 2022-10-03 14:21:44 -07:00
virt kvm/vfio: ensure kvg instance stays around in kvm_vfio_group_add() 2023-09-13 09:42:46 +02:00
.clang-format inet: ping: use hlist_nulls rcu iterator during lookup 2022-12-01 12:42:46 +01:00
.cocciconfig scripts: add Linux .cocciconfig for coccinelle 2016-07-22 12:13:39 +02:00
.get_maintainer.ignore get_maintainer: add Alan to .get_maintainer.ignore 2022-08-20 15:17:44 -07:00
.gitattributes .gitattributes: use 'dts' diff driver for dts files 2019-12-04 19:44:11 -08:00
.gitignore Merge keystone/android14-6.1-keystone-qcom-release.6.1.43 (ff4725c) into qcom-6.1 2023-12-12 21:28:51 -08:00
.mailmap 9 hotfixes. 6 for MM, 3 for other areas. Four of these patches address 2022-12-10 17:10:52 -08:00
.rustfmt.toml rust: add .rustfmt.toml 2022-09-28 09:02:20 +02:00
allyes_images.bzl build: msm_kernel_le: Add rule to generate super.img 2023-07-20 15:14:44 -07:00
Android.bp Android.bp: add soong namespace 2024-10-05 13:28:37 +02:00
Android.mk Android: Add empty Android.mk file 2024-10-05 13:25:26 +02:00
anorak.bzl defconfig: anorak: add qti epm hardware driver 2024-07-04 10:37:06 +05:30
autoghgvm_lxc.bzl bazel: remove all in-tree modules for autoghgvm_lxc 2024-07-31 02:51:36 -07:00
autoghgvm.bzl build: bazel: Enable GKI based build for authoghgvm 2024-07-02 13:15:03 +05:30
autogvm_lxc.bzl defconfig: autogvm: Compile glink_cma as a kernel module 2024-05-13 10:49:41 -07:00
autogvm.bzl defconfig: autogvm: Enable Aquantia PHY 2024-08-28 10:36:13 -07:00
avb_boot_img.bzl ANDROID: build: avb_boot_img: Use hermetic tools 2023-09-05 12:16:55 -07:00
bazel.WORKSPACE build: Add custom bazel.WORKSPACE file 2022-10-19 16:52:01 -07:00
blair.bzl arm64: defconfig: Disable gic_intr_routing driver for Blair 2024-05-23 22:37:25 +08:00
build_with_bazel.py Revert "ANDROID: build: Add --nocheck_bzl_visibility" 2023-09-09 14:00:35 -07:00
BUILD.bazel Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
build.config.aarch64 ANDROID: Move NDK_TRIPLE to build.config.constants. 2023-02-14 14:13:51 -08:00
build.config.allmodconfig ANDROID: Revert "ANDROID: allmodconfig: disable WERROR" 2023-08-21 17:29:29 +01:00
build.config.allmodconfig.aarch64 ANDROID: drop KERNEL_DIR setting in build.config.common 2020-08-31 15:20:37 +00:00
build.config.allmodconfig.arm ANDROID: drop KERNEL_DIR setting in build.config.common 2020-08-31 15:20:37 +00:00
build.config.allmodconfig.x86_64 ANDROID: drop KERNEL_DIR setting in build.config.common 2020-08-31 15:20:37 +00:00
build.config.allyesconfig build.config: Add build config support for allyesconfig 2023-01-10 15:06:25 -08:00
build.config.amlogic ANDROID: Unnest MAKE_GOALS from build configs 2023-05-02 13:37:21 +00:00
build.config.arm ANDROID: kleaf: move NDK_TRIPLE for arm to build.config.constants. 2023-05-09 22:36:11 +00:00
build.config.common Revert "Merge commit 'b7e8439a2334bb613b38e97eb48712f683b423a1' into HEAD" 2023-08-23 16:38:58 -07:00
build.config.constants ANDROID: clang: update to 17.0.2 2023-05-15 18:53:36 +00:00
build.config.crashdump ANDROID: Move microdroid and crashdump defconfigs to common 2023-09-27 15:30:26 +00:00
build.config.crashdump.aarch64 ANDROID: Move microdroid and crashdump defconfigs to common 2023-09-27 15:30:26 +00:00
build.config.crashdump.x86_64 ANDROID: Move microdroid and crashdump defconfigs to common 2023-09-27 15:30:26 +00:00
build.config.db845c Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
build.config.gki ANDROID: GKI: Source GKI_BUILD_CONFIG_FRAGMENT after setting all variables 2022-12-27 13:52:08 -08:00
build.config.gki_consolidate.aarch64 ANDROID: bazel: add GKI consolidate Bazel build 2023-02-01 18:44:25 -08:00
build.config.gki_kasan ANDROID: build.config: re-disable LTO properly for KASAN 2022-03-24 12:41:35 -07:00
build.config.gki_kasan.aarch64 ANDROID: drop KERNEL_DIR setting in build.config.common 2020-08-31 15:20:37 +00:00
build.config.gki_kasan.x86_64 ANDROID: drop KERNEL_DIR setting in build.config.common 2020-08-31 15:20:37 +00:00
build.config.gki_kprobes ANDROID: build.configs: migrate away from CC_LD_ARG 2021-07-02 09:49:23 +00:00
build.config.gki_kprobes.aarch64 ANDROID: Adding kprobes build configs for Cuttlefish 2021-03-01 15:29:45 +00:00
build.config.gki_kprobes.x86_64 ANDROID: Adding kprobes build configs for Cuttlefish 2021-03-01 15:29:45 +00:00
build.config.gki-debug.aarch64 ANDROID: drop KERNEL_DIR setting in build.config.common 2020-08-31 15:20:37 +00:00
build.config.gki-debug.x86_64 ANDROID: drop KERNEL_DIR setting in build.config.common 2020-08-31 15:20:37 +00:00
build.config.gki.aarch64 ANDROID: Delete MODULES_LIST from build configs. 2023-06-21 11:18:02 +00:00
build.config.gki.aarch64.fips140 ANDROID: remove LTO check from build.config.gki.aarch64.fips140 2024-03-04 11:19:25 +00:00
build.config.gki.riscv64 ANDROID: Delete MODULES_LIST from build configs. 2023-06-21 11:18:02 +00:00
build.config.gki.x86_64 ANDROID: Delete MODULES_LIST from build configs. 2023-06-21 11:18:02 +00:00
build.config.khwasan ANDROID: Add a build config fragment for KHWASan. 2021-10-13 19:44:44 +00:00
build.config.microdroid ANDROID: Move microdroid and crashdump defconfigs to common 2023-09-27 15:30:26 +00:00
build.config.microdroid.aarch64 ANDROID: Move microdroid and crashdump defconfigs to common 2023-09-27 15:30:26 +00:00
build.config.microdroid.x86_64 ANDROID: Move microdroid and crashdump defconfigs to common 2023-09-27 15:30:26 +00:00
build.config.msm.anorak build: Add bazel support for anorak 2024-04-18 12:58:59 +05:30
build.config.msm.auto build: Initial bazel support for gen4auto targets 2023-05-04 04:43:23 -07:00
build.config.msm.autoghgvm build: bazel: Enable GKI based build for authoghgvm 2024-07-02 13:15:03 +05:30
build.config.msm.autoghgvm.lxc bazel: Add support to build autoghgvm_lxc 2024-07-22 19:29:45 -07:00
build.config.msm.autogvm build: Add support to build autogvm target 2023-04-06 22:24:21 -07:00
build.config.msm.blair build config: add build files for Blair 2023-04-07 11:45:28 +08:00
build.config.msm.common Revert "Revert "build.config.msm.common: Remove BRANCH modifications"" 2023-05-15 17:35:32 -07:00
build.config.msm.gen3auto build: Add support to build gen3auto targets 2023-04-08 23:05:14 +05:30
build.config.msm.gen4auto build: Initial bazel support for gen4auto targets 2023-05-04 04:43:23 -07:00
build.config.msm.gki build.config: Remove the generation of system_dlkm twice 2022-10-17 15:17:41 -07:00
build.config.msm.kalama build.config: Remove the generation of system_dlkm twice 2022-10-17 15:17:41 -07:00
build.config.msm.kalama.oemvm config: Add build config for kkp oemvm 2022-09-05 19:51:04 -07:00
build.config.msm.kalama.tuivm config: Add build config and defconfig for kkp 2022-09-08 02:20:39 -07:00
build.config.msm.kalama.vm config: Add build config and defconfig for kkp 2022-09-08 02:20:39 -07:00
build.config.msm.neo-la build: Add bazel support for Neo LA 2024-07-29 19:13:36 +05:30
build.config.msm.niobe build: bazel: Enable compilation for Niobe SoC 2023-09-12 15:02:39 +05:30
build.config.msm.niobe.tuivm build: config: Add build support for Niobe TUIVM 2024-04-17 12:08:29 +05:30
build.config.msm.niobe.vm build: config: Add build support for Niobe TUIVM 2024-04-17 12:08:29 +05:30
build.config.msm.pineapple build.config: Remove the generation of system_dlkm twice 2022-10-17 15:17:41 -07:00
build.config.msm.pineapple.allyes build.config.msm.pineapple.allyes: Add build config for pineapple with allyesconfigs 2023-01-12 10:53:43 -08:00
build.config.msm.pineapple.oemvm build: config: Adding build configs for pineapple oemvm 2022-09-05 18:20:59 -07:00
build.config.msm.pineapple.tuivm build: config: Adding build configs for vm and pineapple tuivm 2022-08-11 01:46:21 -07:00
build.config.msm.pineapple.vm build: Add support for CPIO cmdline support 2023-03-19 19:18:56 -07:00
build.config.msm.pitti build config: add build files for Pitti SoC 2023-08-16 15:03:20 +05:30
build.config.msm.sdmsteppeauto bazel: bazel build system for SA6155 2023-06-15 00:47:12 -07:00
build.config.msm.seraph build: bazel: Enable compilation for Seraph SoC 2024-08-06 12:19:58 +05:30
build.config.msm.vm ANDROID: build: Set module signing keys in VM config 2023-03-02 09:42:17 -08:00
build.config.riscv64 ANDROID: GKI: Add 64-bit RISC-V config 2022-12-08 20:01:15 +00:00
build.config.rockchip ANDROID: GKI: Add rockchip fragment and build.config 2023-09-19 17:36:15 +00:00
build.config.rockpi4 ANDROID: db845c: Remove MAKE_GOALS from build.config 2023-05-15 07:01:39 +00:00
build.config.sxr.common build: Add bazel support for anorak 2024-04-18 12:58:59 +05:30
build.config.x86_64 ANDROID: Move NDK_TRIPLE to build.config.constants. 2023-02-14 14:13:51 -08:00
BUILD.dtc ANDROID: build: Switch to hermetic tools for DTC build 2023-08-29 10:39:29 -07:00
build.targets Merge "build: Add bazel support for Neo LA" 2024-08-07 07:27:45 -07:00
consolidate.bzl ANDROID: bazel: Switch to arch-specific GKI module list 2023-10-17 10:27:57 -07:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: Remove Michal Marek from Kbuild maintainers 2022-11-16 14:53:00 +09:00
dpm_image.bzl ANDROID: build: Add define_dpm_image macro 2023-10-04 15:59:49 -07:00
files_gki_aarch64.txt Merge keystone/android14-6.1-keystone-qcom-release.6.1.78+ (075ce55) into qcom-6.1 2024-07-14 22:05:15 +05:30
gen3auto.bzl bzl: Add msm_npu driver for gen3auto 2024-08-25 19:36:51 -07:00
gen4auto_lxc.bzl ANDROID: build: Fix output directory layout 2023-07-22 20:40:11 -07:00
image_opts.bzl ANDROID: build: Remove default value passed to earlycon cmdline option 2024-04-30 12:36:52 +05:30
kalama_oemvm.bzl ANDROID: Enable oemvm builds in Bazel 2022-12-19 09:40:20 -08:00
kalama_tuivm.bzl build: Add support for Bazel VM builds 2022-11-14 15:05:22 -08:00
kalama.bzl phy: qcom: Add UFS PHY driver snapshot for monaco_auto 2023-07-17 11:34:40 +05:30
Kbuild Kbuild updates for v6.1 2022-10-10 12:00:45 -07:00
Kconfig sched/walt: Introduce WALT as a module 2022-06-28 18:45:55 -07:00
Kconfig.ext ANDROID: kbuild: add Kconfig support for external modules 2021-12-13 18:33:18 +00:00
MAINTAINERS Reapply "Merge tag 'android14-6.1.75_r00' into android14-6.1" 2024-04-02 19:49:12 +00:00
Makefile Makefile: export headers from certain external modules 2024-10-07 20:17:23 +02:00
modules_unprotected.bzl bazel: msm-kernel: Add LA-feature to add unprotected vendor_dlkm 2024-05-27 12:09:48 +05:30
modules.bzl Revert "ANDROID: Build null_blk and scsi_debug as kernel modules" 2024-02-29 10:22:01 -08:00
modules.list.msm.anorak Merge "defconfig: Enable SD card module for anorak" 2024-06-20 01:00:20 -07:00
modules.list.msm.autoghgvm defconfig: Enable secure buffer for secure use cases 2024-06-13 18:34:55 -07:00
modules.list.msm.autogvm modules.list.msm.autogvm: Keep stub regulator to first stage 2024-07-30 06:32:08 +05:30
modules.list.msm.blair defconfig: Enable clock scaling for blair target 2023-09-25 11:44:59 +05:30
modules.list.msm.gen3auto modules.list support for loading gpucc in first stage 2024-07-29 15:48:50 +05:30
modules.list.msm.kalama shmbridge: Force use of SELF_OWNER_BIT 2023-02-28 11:54:26 -08:00
modules.list.msm.neo-la defconfig: Add support for usb related configs in Neo 2024-08-30 00:39:09 -07:00
modules.list.msm.niobe defconfig: Enable QRTR_GUNYAH for niobe 2024-07-15 13:35:23 +05:30
modules.list.msm.pineapple modules.list: pineapple: Add qfprom module to first stage 2024-08-26 17:17:21 +05:30
modules.list.msm.pitti modules: add fbe modules to first stage list 2024-05-21 07:41:06 -07:00
modules.list.msm.sdmsteppeauto Revert "defconfig: Enable clock scaling for sdmsteppe" 2024-03-22 00:14:10 -07:00
modules.list.msm.seraph arm64: defconfig: Enable socinfo and smem drivers for Seraph SoC 2024-08-24 10:35:37 +05:30
modules.systemdlkm_blocklist.msm.anorak modules.list.msm.anorak: Add build configs for Anorak 2024-04-18 12:59:57 +05:30
modules.systemdlkm_blocklist.msm.autoghgvm build: bazel: Add compilation support for autoghgvm 2023-12-21 17:31:48 -08:00
modules.systemdlkm_blocklist.msm.autogvm bazel: Add support to build autogvm 2023-04-05 12:56:46 +05:30
modules.systemdlkm_blocklist.msm.blair modules.blocklist: Add modules to system_dlkm blocklist for blair 2023-11-08 15:04:53 +08:00
modules.systemdlkm_blocklist.msm.gen3auto bazel: Add support to build gen3auto 2023-03-28 21:04:43 -07:00
modules.systemdlkm_blocklist.msm.kalama build: Add systemdlkm blocklist for kalama 2023-01-05 14:49:36 -08:00
modules.systemdlkm_blocklist.msm.neo-la modules.list.msm.neo-la: Add build configs for Neo LA 2024-07-26 14:11:05 +05:30
modules.systemdlkm_blocklist.msm.niobe build: bazel: Enable compilation for Niobe SoC 2023-09-12 15:02:39 +05:30
modules.systemdlkm_blocklist.msm.pineapple modules.blocklist: Add modules to system_dlkm blocklist 2023-09-27 15:29:40 +05:30
modules.systemdlkm_blocklist.msm.pitti bazel: msm-kernel: Add LA-feature to add unprotected vendor_dlkm 2024-05-27 12:09:48 +05:30
modules.systemdlkm_blocklist.msm.sdmsteppeauto bazel: bazel build system for SA6155 2023-06-15 00:47:12 -07:00
modules.systemdlkm_blocklist.msm.seraph build: bazel: Enable compilation for Seraph SoC 2024-08-06 12:19:58 +05:30
modules.vendor_blocklist.msm.anorak modules.blocklist: Add modules blocklist for Anorak 2024-05-07 07:29:13 -07:00
modules.vendor_blocklist.msm.autoghgvm build: bazel: Add compilation support for autoghgvm 2023-12-21 17:31:48 -08:00
modules.vendor_blocklist.msm.autogvm Merge "modules.blocklist: Update blocklist modules for auto vm" 2024-04-03 06:50:43 -07:00
modules.vendor_blocklist.msm.blair modules.blocklist: Add modules to system_dlkm blocklist for blair 2023-11-08 15:04:53 +08:00
modules.vendor_blocklist.msm.gen3auto modules.vendor_blocklist: Remove cnss modules from gen3auto/sdmsteppeauto config 2024-01-26 08:23:59 +05:30
modules.vendor_blocklist.msm.kalama treewide: fix copyrights 2023-01-06 13:10:31 -08:00
modules.vendor_blocklist.msm.neo-la modules.list.msm.neo-la: Add build configs for Neo LA 2024-07-26 14:11:05 +05:30
modules.vendor_blocklist.msm.niobe modules.blocklist: Blocklist ipclite_test module 2024-07-11 20:59:41 -07:00
modules.vendor_blocklist.msm.pineapple modules.blocklist: Add modules to system_dlkm blocklist 2023-09-27 15:29:40 +05:30
modules.vendor_blocklist.msm.pitti modules.blocklist: Add limits_stress driver to block list for pitti 2024-01-10 22:51:14 -08:00
modules.vendor_blocklist.msm.sdmsteppeauto modules.vendor_blocklist: Remove cnss modules from gen3auto/sdmsteppeauto config 2024-01-26 08:23:59 +05:30
modules.vendor_blocklist.msm.seraph build: bazel: Enable compilation for Seraph SoC 2024-08-06 12:19:58 +05:30
msm_abl.bzl build: Stop ABL compilation for autogvm targets 2023-04-06 13:03:35 +05:30
msm_common.bzl ANDROID: build: Replace genrules with write_file where possible 2023-08-01 09:41:05 -07:00
msm_dtc.bzl build: Unify output directory format 2023-01-18 17:14:58 -08:00
msm_kernel_extensions.bzl ANDROID: build: Remove test_mapping definitions 2023-07-27 09:25:18 -07:00
msm_kernel_la.bzl bazel: msm-kernel: Add LA-feature to add unprotected vendor_dlkm 2024-05-27 12:09:48 +05:30
msm_kernel_lagvm.bzl Add support to build ABL for autoghgvm 2024-05-28 23:27:51 -07:00
msm_kernel_le.bzl ANDROID: build: Remove default value passed to earlycon cmdline option 2024-04-30 12:36:52 +05:30
msm_kernel_lxc.bzl Merge "ANDROID: build: Replace genrules with write_file where possible" 2023-08-10 13:43:30 -07:00
msm_kernel_vm.bzl Merge "ANDROID: build: Replace genrules with write_file where possible" 2023-08-10 13:43:30 -07:00
msm_platforms.bzl Merge "build: Add bazel support for Neo LA" 2024-08-07 07:27:45 -07:00
neo_la.bzl defconfig: Add support for usb related configs in Neo 2024-08-30 00:39:09 -07:00
niobe_tuivm.bzl build: config: Add build support for Niobe TUIVM 2024-04-17 12:08:29 +05:30
niobe.bzl arm64: defconfig: Add pwm support for NIOBE 2024-08-23 15:56:41 +05:30
OWNERS Revert "Merge commit 'b7e8439a2334bb613b38e97eb48712f683b423a1' into HEAD" 2023-08-23 16:38:58 -07:00
pineapple_allyes.bzl ANDROID: build: Fix output directory layout 2023-07-22 20:40:11 -07:00
pineapple_oemvm.bzl ANDROID: Enable oemvm builds in Bazel 2022-12-19 09:40:20 -08:00
pineapple_tuivm.bzl build: Add support for Bazel VM builds 2022-11-14 15:05:22 -08:00
pineapple_vms.bzl ANDROID: build: Replace the combine vms rule with getter 2023-03-02 10:35:13 -08:00
pineapple.bzl defconfig: Enable BWPROF module for pineapple 2024-06-18 17:46:46 -07:00
pitti.bzl defconfig: pitti: Enable qseecom proxy driver 2024-05-15 00:33:21 -07:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00
Readme.md V_01-03-59 2024-02-03 18:25:17 -08:00
README.md stm: Removed support for LTS kernel (4.9) EOL 2023-09-14 20:15:40 +02:00
sdmsteppeauto.bzl Merge "defconfig: sdmsteppeauto: Enable gpi config" 2024-09-04 19:04:21 -07:00
seraph.bzl arm64: defconfig: Enable socinfo and smem drivers for Seraph SoC 2024-08-24 10:35:37 +05:30
target_variants.bzl Merge "build: Add bazel support for Neo LA" 2024-08-07 07:27:45 -07:00

How do I submit patches to Android Common Kernels

  1. BEST: Make all of your changes to upstream Linux. If appropriate, backport to the stable releases. These patches will be merged automatically in the corresponding common kernels. If the patch is already in upstream Linux, post a backport of the patch that conforms to the patch requirements below.

    • Do not send patches upstream that contain only symbol exports. To be considered for upstream Linux, additions of EXPORT_SYMBOL_GPL() require an in-tree modular driver that uses the symbol -- so include the new driver or changes to an existing driver in the same patchset as the export.
    • When sending patches upstream, the commit message must contain a clear case for why the patch is needed and beneficial to the community. Enabling out-of-tree drivers or functionality is not not a persuasive case.
  2. LESS GOOD: Develop your patches out-of-tree (from an upstream Linux point-of-view). Unless these are fixing an Android-specific bug, these are very unlikely to be accepted unless they have been coordinated with kernel-team@android.com. If you want to proceed, post a patch that conforms to the patch requirements below.

Common Kernel patch requirements

  • All patches must conform to the Linux kernel coding standards and pass scripts/checkpatch.pl
  • Patches shall not break gki_defconfig or allmodconfig builds for arm, arm64, x86, x86_64 architectures (see https://source.android.com/setup/build/building-kernels)
  • If the patch is not merged from an upstream branch, the subject must be tagged with the type of patch: UPSTREAM:, BACKPORT:, FROMGIT:, FROMLIST:, or ANDROID:.
  • All patches must have a Change-Id: tag (see https://gerrit-review.googlesource.com/Documentation/user-changeid.html)
  • If an Android bug has been assigned, there must be a Bug: tag.
  • All patches must have a Signed-off-by: tag by the author and the submitter

Additional requirements are listed below based on patch type

Requirements for backports from mainline Linux: UPSTREAM:, BACKPORT:

  • If the patch is a cherry-pick from Linux mainline with no changes at all
    • tag the patch subject with UPSTREAM:.
    • add upstream commit information with a (cherry picked from commit ...) line
    • Example:
      • if the upstream commit message is
        important patch from upstream

        This is the detailed description of the important patch

        Signed-off-by: Fred Jones <fred.jones@foo.org>
  • then Joe Smith would upload the patch for the common kernel as
        UPSTREAM: important patch from upstream

        This is the detailed description of the important patch

        Signed-off-by: Fred Jones <fred.jones@foo.org>

        Bug: 135791357
        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
        (cherry picked from commit c31e73121f4c1ec41143423ac6ce3ce6dafdcec1)
        Signed-off-by: Joe Smith <joe.smith@foo.org>
  • If the patch requires any changes from the upstream version, tag the patch with BACKPORT: instead of UPSTREAM:.
    • use the same tags as UPSTREAM:
    • add comments about the changes under the (cherry picked from commit ...) line
    • Example:
        BACKPORT: important patch from upstream

        This is the detailed description of the important patch

        Signed-off-by: Fred Jones <fred.jones@foo.org>

        Bug: 135791357
        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
        (cherry picked from commit c31e73121f4c1ec41143423ac6ce3ce6dafdcec1)
        [joe: Resolved minor conflict in drivers/foo/bar.c ]
        Signed-off-by: Joe Smith <joe.smith@foo.org>

Requirements for other backports: FROMGIT:, FROMLIST:,

  • If the patch has been merged into an upstream maintainer tree, but has not yet been merged into Linux mainline
    • tag the patch subject with FROMGIT:
    • add info on where the patch came from as (cherry picked from commit <sha1> <repo> <branch>). This must be a stable maintainer branch (not rebased, so don't use linux-next for example).
    • if changes were required, use BACKPORT: FROMGIT:
    • Example:
      • if the commit message in the maintainer tree is
        important patch from upstream

        This is the detailed description of the important patch

        Signed-off-by: Fred Jones <fred.jones@foo.org>
  • then Joe Smith would upload the patch for the common kernel as
        FROMGIT: important patch from upstream

        This is the detailed description of the important patch

        Signed-off-by: Fred Jones <fred.jones@foo.org>

        Bug: 135791357
        (cherry picked from commit 878a2fd9de10b03d11d2f622250285c7e63deace
         https://git.kernel.org/pub/scm/linux/kernel/git/foo/bar.git test-branch)
        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
        Signed-off-by: Joe Smith <joe.smith@foo.org>
  • If the patch has been submitted to LKML, but not accepted into any maintainer tree
    • tag the patch subject with FROMLIST:
    • add a Link: tag with a link to the submittal on lore.kernel.org
    • add a Bug: tag with the Android bug (required for patches not accepted into a maintainer tree)
    • if changes were required, use BACKPORT: FROMLIST:
    • Example:
        FROMLIST: important patch from upstream

        This is the detailed description of the important patch

        Signed-off-by: Fred Jones <fred.jones@foo.org>

        Bug: 135791357
        Link: https://lore.kernel.org/lkml/20190619171517.GA17557@someone.com/
        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
        Signed-off-by: Joe Smith <joe.smith@foo.org>

Requirements for Android-specific patches: ANDROID:

  • If the patch is fixing a bug to Android-specific code
    • tag the patch subject with ANDROID:
    • add a Fixes: tag that cites the patch with the bug
    • Example:
        ANDROID: fix android-specific bug in foobar.c

        This is the detailed description of the important fix

        Fixes: 1234abcd2468 ("foobar: add cool feature")
        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
        Signed-off-by: Joe Smith <joe.smith@foo.org>
  • If the patch is a new feature
    • tag the patch subject with ANDROID:
    • add a Bug: tag with the Android bug (required for android-specific features)