Go to file
Masahiro Yamada 89c2ba9ce4
BACKPORT: UPSTREAM: kbuild: rename cmd_{bzip2,lzma,lzo,lz4,xzkern,zstd22}
GZIP-compressed files end with 4 byte data that represents the size
of the original input. The decompressors (the self-extracting kernel)
exploit it to know the vmlinux size beforehand. To mimic the GZIP's
trailer, Kbuild provides cmd_{bzip2,lzma,lzo,lz4,xzkern,zstd22}.
Unfortunately these macros are used everywhere despite the appended
size data is only useful for the decompressors.

There is no guarantee that such hand-crafted trailers are safely ignored.
In fact, the kernel refuses compressed initramdfs with the garbage data.
That is why usr/Makefile overrides size_append to make it no-op.

To limit the use of such broken compressed files, this commit renames
the existing macros as follows:

  cmd_bzip2   --> cmd_bzip2_with_size
  cmd_lzma    --> cmd_lzma_with_size
  cmd_lzo     --> cmd_lzo_with_size
  cmd_lz4     --> cmd_lz4_with_size
  cmd_xzkern  --> cmd_xzkern_with_size
  cmd_zstd22  --> cmd_zstd22_with_size

To keep the decompressors working, I updated the following Makefiles
accordingly:

  arch/arm/boot/compressed/Makefile
  arch/h8300/boot/compressed/Makefile
  arch/mips/boot/compressed/Makefile
  arch/parisc/boot/compressed/Makefile
  arch/s390/boot/compressed/Makefile
  arch/sh/boot/compressed/Makefile
  arch/x86/boot/compressed/Makefile

I reused the current macro names for the normal usecases; they produce
the compressed data in the proper format.

I did not touch the following:

  arch/arc/boot/Makefile
  arch/arm64/boot/Makefile
  arch/csky/boot/Makefile
  arch/mips/boot/Makefile
  arch/riscv/boot/Makefile
  arch/sh/boot/Makefile
  kernel/Makefile

This means those Makefiles will stop appending the size data.

I dropped the 'override size_append' hack from usr/Makefile.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nicolas Schier <n.schier@avm.de>

Bug: 135791357
(cherry picked from commit 7ce7e984ab2b218d6e92d5165629022fe2daf9ee
 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master)
Change-Id: I3524909ef3daab85f7d22afdebc2e5bbfd5e5cf3
[szuweilin: Resolved the conflict about non-existing zstd22 in arch/s390/boot/compressed/Makefile]
Signed-off-by: SzuWei Lin <szuweilin@google.com>
(cherry picked from commit dd18c291f9a958a1e285ce0e84ec6b5879fe10ab)
2024-05-08 03:00:11 +03:00
android Merge keystone/android12-5.10-keystone-qcom-release.198+ (0ebfe67) into msm-5.10 2023-12-05 16:20:08 +05:30
arch BACKPORT: UPSTREAM: kbuild: rename cmd_{bzip2,lzma,lzo,lz4,xzkern,zstd22} 2024-05-08 03:00:11 +03:00
block Merge tag 'android12-5.10.198_r00' into android12-5.10 2023-10-31 10:18:41 +00:00
certs Merge keystone/android12-5.10-keystone-qcom-release.136+ (3593700) into msm-5.10 2022-11-21 13:02:31 +05:30
crypto This is the 5.10.197 stable release 2023-10-26 17:52:15 +00:00
Documentation BACKPORT: scripts/Makefile.clang: default to LLVM_IAS=1 2024-05-08 03:00:11 +03:00
drivers usb: dwc3: msm: Enforce usb_data_enabled by blocking role switches 2024-05-07 04:50:47 +03:00
fs FROMGIT: f2fs: do not return EFSCORRUPTED, but try to run online repair 2024-05-07 01:22:29 +03:00
include UPSTREAM: kbuild: check the minimum compiler version in Kconfig 2024-05-08 03:00:08 +03:00
init BACKPORT: kbuild: check the minimum linker version in Kconfig 2024-05-08 03:00:08 +03:00
io_uring This is the 5.10.195 stable release 2023-09-19 11:32:32 +00:00
ipc ipc/sem: Fix dangling sem_array access in semtimedop race 2022-12-08 11:24:00 +01:00
kernel Merge keystone/android12-5.10-keystone-qcom-release.198+ (0ebfe67) into msm-5.10 2023-12-05 16:20:08 +05:30
lib Merge keystone/android12-5.10-keystone-qcom-release.198+ (0ebfe67) into msm-5.10 2023-12-05 16:20:08 +05:30
LICENSES
mm Merge keystone/android12-5.10-keystone-qcom-release.198+ (0ebfe67) into msm-5.10 2023-12-05 16:20:08 +05:30
net Merge keystone/android12-5.10-keystone-qcom-release.198+ (0ebfe67) into msm-5.10 2023-12-05 16:20:08 +05:30
samples This is the 5.10.197 stable release 2023-10-26 17:52:15 +00:00
scripts BACKPORT: UPSTREAM: kbuild: rename cmd_{bzip2,lzma,lzo,lz4,xzkern,zstd22} 2024-05-08 03:00:11 +03:00
security This is the 5.10.198 stable release 2023-10-26 17:54:46 +00:00
sound Merge keystone/android12-5.10-keystone-qcom-release.198+ (0ebfe67) into msm-5.10 2023-12-05 16:20:08 +05:30
techpack
tools This is the 5.10.198 stable release 2023-10-26 17:54:46 +00:00
usr BACKPORT: UPSTREAM: kbuild: rename cmd_{bzip2,lzma,lzo,lz4,xzkern,zstd22} 2024-05-08 03:00:11 +03:00
virt KVM: fix memoryleak in kvm_init() 2023-04-05 11:23:43 +02:00
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore ANDROID: Add build.config.msm.* to .gitignore 2021-07-07 19:14:24 +00:00
.mailmap
Android.bp Android.bp: add soong namespace 2024-05-07 01:22:26 +03:00
Android.mk Android: Add empty Android.mk file 2024-05-07 01:22:27 +03:00
build.config.aarch64 ANDROID: arm64: enable compat vdso 2021-05-13 09:14:25 -07:00
build.config.allmodconfig ANDROID: Revert "ANDROID: allmodconfig: disable WERROR" 2023-01-26 11:34:37 +00:00
build.config.allmodconfig.aarch64
build.config.allmodconfig.arm
build.config.allmodconfig.x86_64
build.config.amlogic
build.config.anorak defconfig: build.config: Add earlycon option to commandline 2023-03-28 23:52:11 +05:30
build.config.arm ANDROID: enable LLVM_IAS=1 for clang's integrated assembler for arm 2021-03-24 09:21:58 -07:00
build.config.common ANDROID: fix KCFLAGS override by __ANDROID_COMMON_KERNEL__ 2022-04-29 20:20:21 +00:00
build.config.db845c
build.config.gki
build.config.gki_consolidate.aarch64 ANDROID: qki: Add consolidate config 2021-05-05 19:49:45 -07:00
build.config.gki_kasan ANDROID: build.config: Disable LTO for KASAN and Kprobes builds 2021-03-08 00:31:49 +00:00
build.config.gki_kasan.aarch64
build.config.gki_kasan.x86_64
build.config.gki_kprobes ANDROID: build.config: Disable LTO for KASAN and Kprobes builds 2021-03-08 00:31:49 +00:00
build.config.gki_kprobes.aarch64
build.config.gki_kprobes.x86_64
build.config.gki-debug.aarch64
build.config.gki-debug.x86_64
build.config.gki.aarch64 ANDROID: GKI: Add symbol list for Nothing 2023-09-04 06:37:21 +00:00
build.config.gki.aarch64.fips140 ANDROID: ABI: add new symbols required by fips140.ko 2021-10-29 14:32:49 -07:00
build.config.gki.aarch64.fips140_eval_testing ANDROID: fips140: support "evaluation testing" builds via build.sh 2021-11-30 17:55:05 +00:00
build.config.gki.x86_64
build.config.hikey960
build.config.khwasan ANDROID: Add a build config fragment for KHWASan. 2021-04-06 10:01:56 +00:00
build.config.msm.common build.config.anorak: Add build configs for Anorak 2022-02-11 10:40:47 +05:30
build.config.msm.gki build.config.msm.gki: Add other symbol lists 2021-10-07 11:36:14 -07:00
build.config.msm.lahaina build.config.msm.*: Add transition support to msm_kernel folder 2021-04-19 07:52:09 -07:00
build.config.msm.parrot build.config: Update default defconfig fragment for Parrot 2021-11-29 20:35:31 +05:30
build.config.msm.vm Merge "build.config: Enable hermetic toolchain on msm-kernel" 2021-10-27 19:23:46 -07:00
build.config.msm.waipio build.config.msm.waipio: Remove options to earlycon 2021-08-24 12:06:55 -07:00
build.config.msm.waipio.tuivm build.config.msm.waipio.tuivm: Increase DTB img size to 3MB 2022-08-16 18:01:18 +05:30
build.config.neo_la build: config: neo: Add support to compile neo la 2022-02-21 13:10:18 +05:30
build.config.neo_le build.config: incorporation of le ramdisk for neo 2023-03-02 08:52:29 +05:30
build.config.rockchip ANDROID: GKI: rockchip: update fragment file 2022-08-19 19:27:37 +00:00
build.config.sxr.common Change the base config file of waipio_le 2023-06-07 17:30:32 +05:30
build.config.waipio_le build.config: incorporation of le ramdisk for waipio_le 2023-04-10 22:54:05 -07:00
build.config.x86_64 ANDROID: build.config: Add vmlinux.symvers and modules.builtin to DIST_DIR 2021-04-15 10:24:17 +01:00
build.targets build: config: module: Add support to compile waipio le environments 2022-11-27 22:41:07 -08:00
COPYING
CREDITS
files_gki_aarch64.txt GKI: compare missed files to update files_gki_aarch64 2022-05-19 00:27:56 +05:30
Kbuild
Kconfig
kernel_headers.py
MAINTAINERS BACKPORT: Makefile: move initial clang flag handling into scripts/Makefile.clang 2024-05-08 03:00:11 +03:00
Makefile BACKPORT: Makefile: move initial clang flag handling into scripts/Makefile.clang 2024-05-08 03:00:11 +03:00
modules.list.anorak modules.list.msm: Add qcom-dcvs modules to first stage 2022-11-19 13:58:12 +05:30
modules.list.msm.lahaina
modules.list.msm.parrot Revert "ravelin: Add gpucc-ravelin to modules.list.msm.parrot" 2023-02-23 20:45:26 +08:00
modules.list.msm.waipio common: Add nfc module to first stage DLKM 2022-06-29 05:35:11 -07:00
modules.list.neo_la modules: add fbe modules to first stage list 2023-05-08 01:28:46 -07:00
modules.list.neo_le modules.list.neo: Reordering modules for neo 2023-01-10 02:41:34 -08:00
modules.list.waipio_le msm: qcom: Add usb related modules to be loaded in first stage 2023-03-21 11:12:29 +05:30
modules.vendor_blocklist.anorak modules.blocklist: Add modules blocklist for Anorak 2022-06-29 09:20:23 +05:30
modules.vendor_blocklist.msm.parrot modules.blocklist: Add wil6210 driver to block list for parrot 2023-09-14 07:26:21 +05:30
modules.vendor_blocklist.msm.waipio modules.blocklist: Add limits_stat driver to block list 2022-03-15 22:07:36 +05:30
modules.vendor_blocklist.neo_la modules.blocklist: Add blocklist for NEO LA 2022-05-06 21:58:37 -07:00
modules.vendor_blocklist.neo_le modules.blocklist: Add blocklist for NEO LE 2022-06-14 12:26:46 +05:30
modules.vendor_blocklist.waipio_le build: config: module: Add support to compile waipio le environments 2022-11-27 22:41:07 -08:00
OWNERS ANDROID: Use authoritative Dr. No list from android-mainline 2021-07-22 15:25:25 +00:00
README
README.md

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 script/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)