kernel-6.1/kernel.spec
Mikhail Novosyolov 9f4773fc0d upd: 5.4.32 -> 5.4.40
```
$ for i in ChangeLog-5.4.* ; do echo $i | sed -e 's,ChangeLog-,Linux ,g' ; cat $i | grep ^commit -A4 | grep -v 'Linux 5\.4\.' | grep -E '^[[:space:]]' | sort -u; done

Linux 5.4.33
    ACPICA: Allow acpi_any_gpe_status_set() to skip one GPE
    ACPI: EC: Do not clear boot_ec_is_ecdt in acpi_ec_add()
    ACPI: PM: s2idle: Refine active GPEs check
    acpi/x86: ignore unspecified bit positions in the ACPI global lock field
    ALSA: doc: Document PC Beep Hidden Register on Realtek ALC256
    ALSA: hda: Add driver blacklist
    ALSA: hda: Fix potential access overflow in beep helper
    ALSA: hda/realtek - Add quirk for Lenovo Carbon X1 8th gen
    ALSA: hda/realtek - Add quirk for MSI GL63
    ALSA: hda/realtek - a fake key event is triggered by running shutup
    ALSA: hda/realtek: Enable mute LED on an HP system
    ALSA: hda/realtek - Remove now-unnecessary XPS 13 headphone noise fixups
    ALSA: hda/realtek - Set principled PC Beep configuration for ALC256
    ALSA: ice1724: Fix invalid access for enumerated ctl items
    ALSA: pcm: oss: Fix regression by buffer overflow fix
    ALSA: usb-audio: Add mixer workaround for TRX40 and co
    arm64: Always force a branch protection mode when the compiler has one
    arm64: armv8_deprecated: Fix undef_hook mask for thumb setend
    arm64: dts: allwinner: h5: Fix PMU compatible
    arm64: dts: allwinner: h6: Fix PMU compatible
    arm64: dts: ti: k3-am65: Add clocks to dwc3 nodes
    ARM: dts: exynos: Fix polarity of the LCD SPI bus on UniversalC210 board
    ARM: dts: Fix dm814x Ethernet by changing to use rgmii-id mode
    ARM: dts: sun8i-a83t-tbs-a711: HM5065 doesn't like such a high voltage
    ASoC: dapm: connect virtual mux with default value
    ASoC: dpcm: allow start or stop during pause for backend
    ASoC: fix regwmask
    ASoC: stm32: sai: Add missing cleanup
    ASoC: topology: use name_prefix for new kcontrol
    ath9k: Handle txpower changes even when TPC is disabled
    block, bfq: fix use-after-free in bfq_idle_slice_timer_body
    block, bfq: move forward the getting of an extra ref in bfq_bfqq_move
    block: Fix use-after-free issue accessing struct io_cq
    block: keep bdi->io_pages in sync with max_sectors_kb for stacked devices
    bpf: Fix deadlock with rq_lock in bpf_send_signal()
    bpf: Fix tnum constraints for 32-bit comparisons
    btrfs: Don't submit any btree write bio if the fs has errors
    btrfs: drop block from cache on error in relocation
    Btrfs: fix crash during unmount due to race with delayed inode workers
    btrfs: fix missing file extent item for hole after ranged fsync
    btrfs: fix missing semaphore unlock in btrfs_sync_file
    btrfs: qgroup: ensure qgroup_rescan_running is only set when the worker is at least queued
    btrfs: reloc: clean dirty subvols if we fail to start a transaction
    btrfs: remove a BUG_ON() from merge_reloc_roots()
    btrfs: restart relocate_tree_blocks properly
    btrfs: set update the uuid generation as soon as possible
    btrfs: track reloc roots based on their commit root bytenr
    btrfs: unset reloc control if we fail to recover
    btrfs: use nofs allocations for running delayed items
    bus: sunxi-rsb: Return correct data when mixing 16-bit and 8-bit reads
    cfg80211: Do not warn on same channel at the end of CSA
    CIFS: Fix bug which the return value by asynchronous read is error
    clk: ingenic/jz4770: Exit with error if CGU init failed
    clk: ingenic/TCU: Fix round_rate returning error
    cpufreq: imx6q: fix error handling
    cpufreq: imx6q: Fixes unwanted cpu overclocking on i.MX6ULL
    cpufreq: powernv: Fix use-after-free
    cpu/hotplug: Ignore pm_wakeup_pending() for disable_nonboot_cpus()
    crypto: caam/qi2 - fix chacha20 data size error
    crypto: caam - update xts sector size for large input length
    crypto: ccree - dec auth tag size from cryptlen map
    crypto: ccree - only try to map auth tag if needed
    crypto: ccree - protect against empty or NULL scatterlists
    crypto: mxs-dcp - fix scatterlist linearization for hash
    crypto: rng - Fix a refcounting bug in crypto_rng_reset()
    cxgb4/ptp: pass the sign of offset delta in FW CMD
    debugfs: Check module state before warning in {full/open}_proxy_open()
    dma-mapping: Fix dma_pgprot() for unencrypted coherent pages
    dm clone: Add missing casts to prevent overflows and data corruption
    dm clone: Add overflow check for number of regions
    dm clone: Fix handling of partial region discards
    dm clone metadata: Fix return type of dm_clone_nr_of_hydrated_regions()
    dm clone: replace spin_lock_irqsave with spin_lock_irq
    dm integrity: fix a crash with unusually large tag size
    dm verity fec: fix memory leak in verity_fec_dtr
    dm writecache: add cond_resched to avoid CPU hangs
    dm zoned: remove duplicate nr_rnd_zones increase in dmz_init_zone()
    drm/amdgpu: fix gfx hang during suspend with video playback (v2)
    drm/amdgpu/powerplay: using the FCLK DPM table to set the MCLK
    drm/amdgpu: unify fw_write_wait for new gfx9 asics
    drm/dp_mst: Fix clearing payload state on topology disable
    drm/etnaviv: rework perfmon query infrastructure
    drm/i915/gem: Flush all the reloc_gpu batch
    drm/i915/icl+: Don't enable DDI IO power on a TypeC port in TBT mode
    drm: Remove PageReserved manipulation from drm_pci_alloc
    drm/scheduler: fix rare NULL ptr race
    efi/x86: Add TPM related EFI tables to unencrypted mapping checks
    efi/x86: Fix the deletion of variables in mixed mode
    efi/x86: Ignore the memory attributes table on i386
    erofs: correct the remaining shrink objects
    ext4: fix a data race at inode->i_blocks
    firmware: arm_sdei: fix double-lock on hibernate with shared events
    firmware: fix a double abort case with fw_load_sysfs_fallback
    fs/filesystems.c: downgrade user-reachable WARN_ONCE() to pr_warn_once()
    ftrace/kprobe: Show the maxactive number on kprobe_events
    genirq/debugfs: Add missing sanity checks to interrupt injection
    genirq/irqdomain: Check pointer in irq_domain_alloc_irqs_hierarchy()
    gfs2: Do log_flush in gfs2_ail_empty_gl even if ail list is empty
    gfs2: Don't demote a glock until its revokes are written
    hfsplus: fix crash and filesystem corruption when deleting files
    hinic: fix a bug of waitting for IO stopped
    hinic: fix out-of-order excution in arm cpu
    hinic: fix the bug of clearing event queue
    hinic: fix wrong para of wait_for_completion_timeout
    hinic: fix wrong value of MIN_SKB_LEN
    i2c: pca-platform: Use platform_irq_get_optional
    i2c: st: fix missing struct parameter description
    Input: i8042 - add Acer Aspire 5738z to nomux list
    Input: tm2-touchkey - add support for Coreriver TC360 variant
    io_uring: honor original task RLIMIT_FSIZE
    io_uring: remove bogus RLIMIT_NOFILE check in file registration
    ipmi: fix hung processes in __get_guid()
    irqchip/gic-v4: Provide irq_retrigger to avoid circular locking dependency
    irqchip/versatile-fpga: Apply clear-mask earlier
    irqchip/versatile-fpga: Handle chained IRQs properly
    iwlwifi: mvm: Fix rate scale NSS configuration
    KEYS: reaching the keys quotas correctly
    kmod: make request_module() return an error when autoloading is disabled
    KVM: nVMX: Properly handle userspace interrupt window request
    KVM: s390: vsie: Fix delivery of addressing exceptions
    KVM: s390: vsie: Fix region 1 ASCE sanity shadow address checks
    KVM: VMX: Add a trampoline to fix VMREAD error handling
    KVM: VMX: Always VMCLEAR in-use VMCSes during crash with kexec support
    KVM: VMX: fix crash cleanup when KVM wasn't used
    KVM: x86: Allocate new rmap and large page tracking when moving memslot
    KVM: x86: Gracefully handle __vmalloc() failure during VM allocation
    libata: Remove extra scsi_host_put() in ata_scsi_add_hosts()
    libata: Return correct status in sata_pmp_eh_recover_pm() when ATA_DFLAG_DETACH is set
    locking/lockdep: Avoid recursion in lockdep_count_{for,back}ward_deps()
    md: check arrays is suspended in mddev_detach before call quiesce operations
    media: allegro: fix type of gop_length in channel_create message
    media: hantro: Read be32 words starting at every fourth byte
    media: i2c: ov5695: Fix power on and off sequences
    media: i2c: video-i2c: fix build errors due to 'imply hwmon'
    media: imx: imx7-media-csi: Fix video field handling
    media: imx: imx7_mipi_csis: Power off the source when stopping streaming
    media: rc: add keymap for Videostrong KII Pro
    media: ti-vpe: cal: fix a kernel oops when unloading module
    media: ti-vpe: cal: fix disable_irqs to only the intended target
    media: venus: firmware: Ignore secure call error on first resume
    media: venus: hfi_parser: Ignore HEVC encoding for V1
    mfd: dln2: Fix sanity checking for endpoints
    MIPS: OCTEON: irq: Fix potential NULL pointer dereference
    MIPS/tlbex: Fix LDDIR usage in setup_pw() for Loongson-3
    mmc: sdhci: Convert sdhci_set_timeout_irq() to non-static
    mmc: sdhci-of-esdhc: fix esdhc_reset() for different controller versions
    mmc: sdhci: Refactor sdhci_set_timeout()
    mm, memcg: do not high throttle allocators based on wraparound
    mtd: spinand: Do not erase the block before writing a bad block marker
    mtd: spinand: Stop using spinand->oobbuf for buffering bad block markers
    net: qualcomm: rmnet: Allow configuration updates to existing devices
    net: stmmac: platform: Fix misleading interrupt error msg
    net: vxge: fix wrong __VA_ARGS__ usage
    nfsd: fsnotify on rmdir under nfsd/clients/
    NFS: Fix a page leak in nfs_destroy_unlinked_subrequests()
    NFS: Fix use-after-free issues in nfs_pageio_add_request()
    null_blk: fix spurious IO errors after failed past-wp access
    null_blk: Fix the null_add_dev() error path
    null_blk: Handle null_add_dev() failures properly
    nvme-fc: Revert "add module to ops template to allow module references"
    nvmet-tcp: fix maxh2cdata icresp parameter
    ocfs2: no need try to truncate file beyond i_size
    PCI: Add boot interrupt quirk mechanism for Xeon chipsets
    PCI/ASPM: Clear the correct bits when enabling L1 substates
    PCI: endpoint: Fix for concurrent memory allocation in OB address region
    PCI: pciehp: Fix indefinite wait on sysfs requests
    PCI: qcom: Fix the fixup of PCI_VENDOR_ID_QCOM
    PCI/switchtec: Fix init_completion race condition with poll_wait()
    perf tools: Support Python 3.8+ in Makefile
    platform/x86: asus-wmi: Support laptops where the first battery is named BATT
    PM / Domains: Allow no domain-idle-states DT property in genpd when parsing
    PM: sleep: wakeup: Skip wakeup_source_sysfs_remove() if device is not there
    powerpc/64: Prevent stack protection in early boot
    powerpc/64: Setup a paca before parsing device tree etc.
    powerpc/64/tm: Don't let userspace set regs->trap via sigreturn
    powerpc/fsl_booke: Avoid creating duplicate tlb1 entry
    powerpc/hash64/devmap: Use H_PAGE_THP_HUGE when setting up huge devmap PTE entries
    powerpc/kasan: Fix kasan_remap_early_shadow_ro()
    powerpc/kprobes: Ignore traps that happened in real mode
    powerpc: Make setjmp/longjmp signature standard
    powerpc/pseries: Avoid NULL pointer dereference when drmem is unavailable
    powerpc/pseries: Drop pointless static qualifier in vpa_debugfs_init()
    powerpc/xive: Fix xmon support on the PowerNV platform
    powerpc/xive: Use XIVE_BAD_IRQ instead of zero to catch non configured IPIs
    pstore/platform: fix potential mem leak if pstore_init_fs failed
    pstore: pstore_ftrace_seq_next should increase position index
    qlcnic: Fix bad kzalloc null test
    remoteproc: Fix NULL pointer dereference in rproc_virtio_notify
    remoteproc: qcom_q6v5_mss: Don't reassign mpss region on shutdown
    remoteproc: qcom_q6v5_mss: Reload the mba region on coredump
    Revert "drm/dp_mst: Remove VCPI while disabling topology mgr"
    rxrpc: Abstract out the calculation of whether there's Tx space
    rxrpc: Fix call interruptibility handling
    s390/diag: fix display of diagnose call statistics
    sched: Avoid scale real weight down to zero
    sched/core: Remove duplicate assignment in sched_tick_remote()
    sched/fair: Fix enqueue_task_fair warning
    scsi: lpfc: Add registration for CPU Offline/Online events
    scsi: lpfc: Fix broken Credit Recovery after driver load
    scsi: lpfc: Fix configuration of BB credit recovery in service parameters
    scsi: lpfc: Fix Fabric hostname registration if system hostname changes
    scsi: lpfc: fix inlining of lpfc_sli4_cleanup_poll_list()
    scsi: lpfc: Fix lpfc_io_buf resource leak in lpfc_get_scsi_buf_s4 error path
    scsi: mpt3sas: Fix kernel panic observed on soft HBA unplug
    scsi: ufs: fix Auto-Hibern8 error detection
    scsi: zfcp: fix missing erp_lock in port recovery trigger for point-to-point
    seccomp: Add missing compat_ioctl for notify
    selftests/net: add definition for SOL_DCCP to fix compilation errors for old libc
    selftests/powerpc: Add tlbie_test in .gitignore
    selftests: vm: drop dependencies on page flags from mlock2 tests
    selftests/vm: fix map_hugetlb length used for testing read and write
    selftests/x86/ptrace_syscall_32: Fix no-vDSO segfault
    signal: Extend exec_id to 64bits
    smb3: fix performance regression with setting mtime
    soc: fsl: dpio: register dpio irq handlers after dpio create
    spi: spi-fsl-dspi: Replace interruptible wait queue with a simple completion
    staging: wilc1000: avoid double unlocking of 'wilc->hif_cs' mutex
    thermal: devfreq_cooling: inline all stubs for CONFIG_DEVFREQ_THERMAL=n
    time/sched_clock: Expire timer in hardirq context
    tools: gpio: Fix out-of-tree build regression
    tpm: Don't make log failures fatal
    tpm: tpm1_bios_measurements_next should increase position index
    tpm: tpm2_bios_measurements_next should increase position index
    usb: dwc3: core: add support for disabling SS instances in park mode
    usb: gadget: composite: Inform controller driver of self-powered
    usb: gadget: f_fs: Fix use after free issue as part of queue failure
    vfio: platform: Switch to platform_get_irq_optional()
    x86/boot: Use unsigned comparison for addresses
    x86: Don't let pgprot_modify() change the page encryption bit
    x86/entry/32: Add missing ASM_CLAC to general_protection entry
    x86/tsc_msr: Fix MSR_FSB_FREQ mask for Cherry Trail devices
    x86/tsc_msr: Make MSR derived TSC frequency more accurate
    x86/tsc_msr: Use named struct initializers
    xarray: Fix early termination of xas_for_each_marked
    XArray: Fix xas_pause for large multi-index entries
    xen/blkfront: fix memory allocation flags in blkfront_setup_indirect()
    xhci: bail out early if driver can't accress host in resume
Linux 5.4.34
    acpi/nfit: improve bounds checking for 'func'
    ALSA: hda/realtek - Enable the headset mic on Asus FX505DT
    ALSA: usb-audio: Check mapping at creating connector controls, too
    ALSA: usb-audio: Don't create jack controls for PCM terminals
    ALSA: usb-audio: Don't override ignore_ctl_error value from the map
    ALSA: usb-audio: Filter error from connector kctl ops, too
    amd-xgbe: Use __napi_schedule() in BH context
    arm64: dts: librem5-devkit: add a vbus supply to usb0
    arm64: vdso: don't free unallocated pages
    ARM: dts: imx7-colibri: fix muxing of usbc_det pin
    ASoC: Intel: mrfld: fix incorrect check on p->sink
    ASoC: Intel: mrfld: return error codes when an error occurs
    btrfs: check commit root generation in should_ignore_root
    clk: at91: sam9x60: fix usb clock parents
    clk: at91: usb: use proper usbs_mask
    drm/amdgpu: fix the hw hang during perform system reboot and reset
    drm/amd/powerplay: force the trim of the mclk dpm_levels if OD is enabled
    ext4: do not zeroout extents beyond i_disksize
    ext4: fix incorrect group count in ext4_fill_super error message
    ext4: fix incorrect inodes per group in error message
    hsr: check protocol version in hsr_newlink()
    i2c: designware: platdrv: Remove DPM_FLAG_SMART_SUSPEND flag on BYT and CHT
    irqchip/ti-sci-inta: Fix processing of masked irqs
    jbd2: improve comments about freeing data buffers whose page mapping is NULL
    keys: Fix proc_keys_next to increase position index
    l2tp: Allow management of tunnels and session in user namespace
    mac80211: fix race in ieee80211_register_hw()
    mac80211_hwsim: Use kstrndup() in place of kasprintf()
    net/bpfilter: remove superfluous testing message
    net: dsa: mt7530: fix tagged frames pass-through in VLAN-unaware mode
    net: dsa: mt7530: move mt7623 settings out off the mt7530
    net: ethernet: mediatek: move mt7623 settings out off the mt7530
    net: ipv4: devinet: Fix crash when add/del multicast IP with autojoin
    net: ipv6: do not consider routes via gateways for anycast address check
    net/mlx5e: Add missing release firmware call
    net/mlx5e: Encapsulate updating netdev queues into a function
    net/mlx5e: Fix nest_level for vlan pop action
    net/mlx5e: Fix pfnum in devlink port attribute
    net/mlx5e: Rename hw_modify to preactivate
    net/mlx5e: Use preactivate hook to set the indirection table
    net/mlx5: Fix frequent ioread PCI access during recovery
    net: phy: micrel: use genphy_read_status for KSZ9131
    net: qrtr: send msgs from local of same id as broadcast
    net: revert default NAPI poll timeout to 2 jiffies
    net: stmmac: dwmac-sunxi: Provide TX and RX fifo sizes
    net: tun: record RX queue in skb before do_xdp_generic()
    nl80211: fix NL80211_ATTR_FTM_RESPONDER policy
    ovl: fix value of i_ino for lower hardlink corner case
    perf report: Fix no branch type statistics report issue
    platform/chrome: cros_ec_rpmsg: Fix race with host event
    pwm: pca9685: Fix PWM/GPIO inter-operation
    Revert "ACPI: EC: Do not clear boot_ec_is_ecdt in acpi_ec_add()"
    scsi: target: fix hang when multiple threads try to destroy the same iscsi session
    scsi: target: remove boilerplate code
    scsi: ufs: Fix ufshcd_hold() caused scheduling while atomic
    tracing: Fix the race between registering 'snapshot' event trigger and triggering 'snapshot' operation
    usb: dwc3: gadget: Don't clear flags before transfer ended
    x86/microcode/AMD: Increase microcode PATCH_MAX_SIZE
    x86/resctrl: Fix invalid attempt at removing the default resource group
    x86/resctrl: Preserve CDP enable over CPU hotplug
Linux 5.4.35
    ACPICA: Fixes for acpiExec namespace init file
    afs: Fix afs_d_validate() to set the right directory version
    afs: Fix decoding of inline abort codes from version 1 status records
    afs: Fix missing XDR advance in xdr_decode_{AFS,YFS}FSFetchStatus()
    afs: Fix race between post-modification dir edit and readdir/d_revalidate
    afs: Fix rename operation status delivery
    ALSA: hda: Don't release card at firmware loading error
    ALSA: hda: Honor PM disablement in PM freeze and thaw_noirq ops
    arm64: dts: allwinner: a64: Fix display clock register range
    arm64: dts: clearfog-gt-8k: set gigabit PHY reset deassert delay
    arm64: tegra: Add PCIe endpoint controllers nodes for Tegra194
    arm64: tegra: Fix Tegra194 PCIe compatible string
    arm, bpf: Fix bugs with ALU64 {RSH, ARSH} BPF_K shift by 0
    arm, bpf: Fix offset overflow for BPF_MEM BPF_DW
    ARM: dts: imx6: Use gpc for FEC interrupt controller to fix wake on LAN.
    ARM: dts: rockchip: fix lvds-encoder ports subnode for rk3188-bqedison2qc
    ARM: dts: rockchip: fix vqmmc-supply property name for rk3188-bqedison2qc
    ARM: dts: sunxi: Fix DE2 clocks register range
    block, bfq: invoke flush_idle_tree after reparent_active_queues in pd_offline
    block, bfq: make reparent_leaf_entity actually work only on leaf entities
    block, bfq: turn put_queue into release_process_ref in __bfq_bic_change_cgroup
    bpf: fix buggy r0 retval refinement for tracing helpers
    bpf: Test_progs, add test to catch retval refine error handling
    bpf: Test_verifier, bpf_get_stack return value add <0
    bpf, test_verifier: switch bpf_get_stack's 0 s> r8 test
    btrfs: add RCU locks around block group initialization
    cifs: Allocate encryption header through kmalloc
    clk: at91: usb: continue if clk_hw_round_rate() return zero
    clk: Don't cache errors from clk_ops::get_phase()
    clk: tegra: Fix Tegra PMC clock out parents
    compiler.h: fix error in BUILD_BUG_ON() reporting
    csky: Fixup cpu speculative execution to IO area
    csky: Fixup get wrong psr value from phyical reg
    csky: Fixup init_fpu compile warning with __init
    dma-coherent: fix integer overflow in the reserved-memory dma allocation
    dma-debug: fix displaying of dma allocation type
    docs: Fix path to MTD command line partition parser
    drm/amdkfd: kfree the wrong pointer
    drm/nouveau/gr/gp107,gp108: implement workaround for HW hanging during init
    drm/nouveau/svm: check for SVM initialized before migrating
    drm/nouveau/svm: fix vma range check for migration
    drm/nouveau: workaround runpm fail by disabling PCI power management on certain intel bridges
    drm/ttm: flush the fence on the bo after we individualize the reservation object
    drm/vc4: Fix HDMI mode validation
    ext2: fix debug reference to ext2_xattr_cache
    ext2: fix empty body warnings when -Wextra is used
    ext4: do not commit super on read-only bdev
    ext4: use non-movable memory for superblock readahead
    f2fs: Add a new CP flag to help fsck fix resize SPO issues
    f2fs: Fix mount failure due to SPO after a successful online resize FS
    f2fs: fix NULL pointer dereference in f2fs_write_begin()
    f2fs: fix the panic in do_checkpoint()
    f2fs: fix to show norecovery mount option
    f2fs: fix to wait all node page writeback
    fbdev: potential information leak in do_fb_ioctl()
    fbmem: Adjust indentation in fb_prepare_logo and fb_blank
    hibernate: Allow uswsusp to write to swap
    iio: si1133: read 24-bit signed integer for measurement
    include/linux/swapops.h: correct guards for non_swap_entry()
    iommu/amd: Fix the configuration of GCR3 table root pointer
    iommu/virtio: Fix freeing of incomplete domains
    iommu/vt-d: Fix mm reference leak
    iommu/vt-d: Fix page request descriptor size
    iommu/vt-d: Silence RCU-list debugging warning in dmar_find_atsr()
    irqchip/mbigen: Free msi_desc on device teardown
    kbuild, btf: Fix dependencies for DEBUG_INFO_BTF
    KEYS: Don't write out to userspace while holding key semaphore
    KVM: PPC: Book3S HV: Fix H_CEDE return code for nested guests
    KVM: s390: vsie: Fix possible race when shadowing region 3 tables
    leds: core: Fix warning message when init_data
    libnvdimm: Out of bounds read in __nd_ioctl()
    locktorture: Print ratio of acquisitions, not failures
    mm/hugetlb: fix build failure with HUGETLB_PAGE but not HUGEBTLBFS
    mtd: lpddr: Fix a double free in probe()
    mtd: phram: fix a double free issue in error path
    mtd: rawnand: free the nand_device object
    mtd: spinand: Explicitly use MTD_OPS_RAW to write the bad block marker to OOB
    net: dsa: bcm_sf2: Fix overflow checks
    netfilter: nf_tables: report EOPNOTSUPP on unsupported flags/object type
    net/mlx5e: Enforce setting of a single FEC mode
    NFS: alloc_nfs_open_context() must use the file cred when available
    NFS: direct.c: Fix memory leak of dreq when nfs_get_lock_context fails
    NFS: Fix memory leaks in nfs_pageio_stop_mirroring()
    NFSv4.2: error out when relink swapfile
    NFSv4/pnfs: Return valid stateids in nfs_layout_find_inode_by_stateid()
    objtool: Fix switch table detection in .text.unlikely
    of: overlay: kmemleak in dup_and_fixup_symbol_prop()
    of: unittest: kmemleak in of_unittest_overlay_high_level()
    of: unittest: kmemleak in of_unittest_platform_populate()
    of: unittest: kmemleak on changeset destroy
    percpu_counter: fix a data race at vm_committed_as
    phy: uniphier-usb3ss: Add Pro5 support
    powerpc/maple: Fix declaration made after definition
    powerpc/prom_init: Pass the "os-term" message to hypervisor
    power: supply: axp288_fuel_gauge: Broaden vendor check for Intel Compute Sticks.
    power: supply: bq27xxx_battery: Silence deferred-probe error
    rbd: avoid a deadlock on header_rwsem when flushing notifies
    rbd: call rbd_dev_unprobe() after unwatching and flushing notifies
    rtc: 88pm860x: fix possible race condition
    s390/cpuinfo: fix wrong output when CPU0 is offline
    s390/cpum_sf: Fix wrong page count in error message
    scsi: sg: add sg_remove_request in sg_common_write
    soc: imx: gpc: fix power up sequencing
    sunrpc: Fix gss_unwrap_resp_integ() again
    SUNRPC: fix krb5p mount to provide large enough buffer in rq_rcvsize
    tty: evh_bytechan: Fix out of bounds accesses
    um: falloc.h needs to be directly included for older libc
    um: ubd: Prevent buffer overrun on command completion
    watchdog: sp805: fix restart handler
    x86: ACPI: fix CPU hotplug deadlock
    x86/Hyper-V: Free hv_panic_page when fail to register kmsg dump
    x86/Hyper-V: Report crash data in die() when panic_on_oops is set
    x86/Hyper-V: Report crash register data or kmsg before running crash kernel
    x86/Hyper-V: Report crash register data when sysctl_record_panic_msg is not set
    x86/Hyper-V: Trigger crash enlightenment only once during system crash.
    x86/Hyper-V: Unload vmbus channel in hv panic callback
    xsk: Add missing check on user supplied headroom size
    xsk: Fix out of boundary write in __xsk_rcv_memcpy
Linux 5.4.36
    ALSA: hda/hdmi: Add module option to disable audio component binding
    ALSA: hda/realtek - Add new codec supported for ALC245
    ALSA: hda/realtek - Fix unexpected init_amp override
    ALSA: hda: Remove ASUS ROG Zenith from the blacklist
    ALSA: usb-audio: Add connector notifier delegation
    ALSA: usb-audio: Add Pioneer DJ DJM-250MK2 quirk
    ALSA: usb-audio: Add static mapping table for ALC1220-VB-based mobos
    ALSA: usb-audio: Filter out unsupported sample rates on Focusrite devices
    ALSA: usb-audio: Fix usb audio refcnt leak when getting spdif
    ALSA: usx2y: Fix potential NULL dereference
    arm64: compat: Workaround Neoverse-N1 #1542419 for compat user-space
    arm64: errata: Hide CTR_EL0.DIC on systems affected by Neoverse-N1 #1542419
    arm64: Fake the IminLine size on systems affected by Neoverse-N1 #1542419
    arm64: Silence clang warning on mismatched value/register sizes
    ARM: imx: provide v7_cpu_resume() only on ARM_CPU_SUSPEND=y
    ASoC: dapm: fixup dapm kcontrol widget
    ASoC: Intel: atom: Take the drv->lock mutex before calling sst_send_slot_map()
    ASoC: Intel: bytcr_rt5640: Add quirk for MPMAN MPWIN895CL tablet
    ASoC: SOF: trace: fix unconditional free in trace release
    audit: check the length of userspace generated audit records
    cdc-acm: close race betrween suspend() and acm_softint
    cdc-acm: introduce a cool down
    ceph: don't skip updating wanted caps when cap is stale
    ceph: return ceph_mdsc_do_request() errors from __get_parent()
    cifs: fix uninitialised lease_key in open_shroot()
    compat: ARM64: always include asm-generic/compat.h
    coredump: fix null pointer dereference on coredump
    cxgb4: fix adapter crash due to wrong MC size
    cxgb4: fix large delays in PTP synchronization
    dma-direct: fix data truncation in dma_direct_get_required_mask()
    drm/amd/display: Calculate scaling ratios on every medium/full update
    drm/amd/display: Not doing optimize bandwidth if flip pending.
    drm/amd/display: Update stream adjust in dc_stream_adjust_vmin_vmax
    ext4: fix extent_status fragmentation for plain files
    f2fs: fix to avoid memory leakage in f2fs_listxattr
    fpga: dfl: pci: fix return value of cci_pci_sriov_configure
    geneve: use the correct nlattr array in NL_SET_ERR_MSG_ATTR
    iio: adc: stm32-adc: fix sleep in atomic context
    iio: adc: ti-ads8344: properly byte swap value
    iio: core: remove extra semi-colon from devm_iio_device_register() macro
    iio: st_sensors: rely on odr mask to know if odr can be set
    iio: xilinx-xadc: Fix ADC-B powerdown
    iio: xilinx-xadc: Fix clearing interrupt when enabling trigger
    iio: xilinx-xadc: Fix sequencer configuration for aux channels in simultaneous mode
    iio: xilinx-xadc: Make sure not exceed maximum samplerate
    ipc/util.c: sysvipc_find_ipc() should increase position index
    ipv4: Update fib_select_default to handle nexthop objects
    ipv6: fix restrict IPV6_ADDRFORM operation
    iwlwifi: mvm: beacon statistics shouldn't go backwards
    iwlwifi: mvm: Do not declare support for ACK Enabled Aggregation
    iwlwifi: mvm: fix inactive TID removal return value usage
    iwlwifi: mvm: limit maximum queue appropriately
    iwlwifi: pcie: actually release queue memory in TVQM
    kconfig: qconf: Fix a few alignment issues
    kernel/gcov/fs.c: gcov_seq_next() should increase position index
    KEYS: Avoid false positive ENOMEM error on key read
    KVM: Check validity of resolved slot when searching memslots
    KVM: s390: Return last valid slot if approx index is out-of-bounds
    KVM: VMX: Enable machine check support for 32bit targets
    libbpf: Fix readelf output parsing on powerpc with recent binutils
    lib/raid6/test: fix build on distros whose /bin/sh is not bash
    loop: Better discard support for block devices
    mac80211: populate debugfs only after cfg80211 init
    macsec: avoid to set wrong mtu
    macvlan: fix null dereference in macvlan_device_event()
    mlxsw: Fix some IS_ERR() vs NULL bugs
    mm/hugetlb: fix a addressing exception caused by huge_pte_offset
    mm/ksm: fix NULL pointer dereference when KSM zero page is enabled
    net: bcmgenet: correct per TX/RX ring statistics
    net: dsa: b53: b53_arl_rw_op() needs to select IVL or SVL
    net: dsa: b53: Fix ARL register definitions
    net: dsa: b53: Fix valid setting for MDB entries
    net: dsa: b53: Lookup VID in ARL searches when VLAN is enabled
    net: dsa: b53: Rework ARL bin logic
    net, ip_tunnel: fix interface lookup with no key
    net/mlx4_en: avoid indirect call in TX completion
    net: netrom: Fix potential nr_neigh refcnt leak in nr_add_node
    net: openvswitch: ovs_ct_exit to be done under ovs_lock
    net: stmmac: dwmac-meson8b: Add missing boundary to RGMII TX clock array
    net/x25: Fix x25_neigh refcnt leak when receiving frame
    nvme: fix compat address handling in several ioctls
    nvme: fix deadlock caused by ANA update wrong locking
    nvme-tcp: fix possible crash in write_zeroes processing
    PCI/ASPM: Allow re-enabling Clock PM
    PCI: pciehp: Prevent deadlock on disconnect
    PCI/PM: Add missing link delays required by the PCIe spec
    PCI/PM: Add pcie_wait_for_link_delay()
    perf/core: Disable page faults when getting phys address
    powerpc/kuap: PPC_KUAP_DEBUG should depend on PPC_KUAP
    powerpc/mm: Fix CONFIG_PPC_KUAP_DEBUG on PPC32
    powerpc/pseries: Fix MCE handling on pseries
    powerpc/setup_64: Set cache-line-size based on cache-block-size
    pwm: bcm2835: Dynamically allocate base
    pwm: rcar: Fix late Runtime PM enablement
    pwm: renesas-tpu: Fix late Runtime PM enablement
    Revert "powerpc/64: irq_work avoid interrupt when called with hardware irqs enabled"
    Revert "serial: uartps: Change uart ID port allocation"
    Revert "serial: uartps: Do not allow use aliases >= MAX_UART_INSTANCES"
    Revert "serial: uartps: Fix error path when alloc failed"
    Revert "serial: uartps: Fix uartps_major handling"
    Revert "serial: uartps: Move Port ID to device data structure"
    Revert "serial: uartps: Register own uart console and driver structures"
    Revert "serial: uartps: Use the same dynamic major number for all ports"
    s390/cio: avoid duplicated 'ADD' uevents
    s390/cio: generate delayed uevent for vfio-ccw subchannels
    s390/mm: fix page table upgrade vs 2ndary address mode accesses
    sched: etf: do not assume all sockets are full blown
    scsi: iscsi: Report unbind session event when the target has been removed
    scsi: libfc: If PRLI rejected, move rport to PLOGI state
    scsi: lpfc: Fix crash after handling a pci error
    scsi: lpfc: Fix crash in target side cable pulls hitting WAIT_FOR_UNREG
    scsi: lpfc: Fix kasan slab-out-of-bounds error in lpfc_unreg_login
    scsi: smartpqi: fix call trace in device discovery
    scsi: smartpqi: fix controller lockup observed during force reboot
    scsi: smartpqi: fix problem with unique ID for physical device
    selftests: Fix suppress test in fib_tests.sh
    selftests: kmod: fix handling test numbers above 9
    serial: sh-sci: Make sure status register SCxSR is read in correct sequence
    signal: Avoid corrupting si_pid and si_uid in do_notify_parent
    staging: comedi: dt2815: fix writing hi byte of analog output
    staging: comedi: Fix comedi_device refcnt leak in comedi_open
    staging: gasket: Fix incongruency in handling of sysfs entries creation
    staging: vt6656: Don't set RCR_MULTICAST or RCR_BROADCAST by default.
    staging: vt6656: Fix calling conditions of vnt_set_bss_mode
    staging: vt6656: Fix drivers TBTT timing counter.
    staging: vt6656: Fix pairwise key entry save.
    staging: vt6656: Power save stop wake_up_count wrap around.
    SUNRPC: Fix backchannel RPC soft lockups
    tcp: cache line align MAX_TCP_HEADER
    team: fix hang in team_mode_get()
    tools/testing/nvdimm: Fix compilation failure without CONFIG_DEV_DAX_PMEM_COMPAT
    tools/test/nvdimm: Fix out of tree build
    tools/vm: fix cross-compile build
    tpm: fix wrong return value in tpm_pcr_extend
    tpm: ibmvtpm: retry on H_CLOSED in tpm_ibmvtpm_send()
    tpm/tpm_tis: Free IRQ if probing fails
    tracing/selftests: Turn off timeout setting
    tty: hvc: fix buffer overflow during hvc_alloc().
    tty: rocket, avoid OOB access
    tty: serial: owl: add "much needed" clk_prepare_enable()
    UAS: fix deadlock in error handling and PM flushing work
    UAS: no use logging any details in case of ENODEV
    USB: Add USB_QUIRK_DELAY_CTRL_MSG and USB_QUIRK_DELAY_INIT for Corsair K70 RGB RAPIDFIRE
    USB: core: Fix free-while-in-use bug in the USB S-Glibrary
    usb: dwc3: gadget: Fix request completion check
    USB: early: Handle AMD's spec-compliant identifiers, too
    usb: f_fs: Clear OS Extended descriptor counts to zero in ffs_data_reset()
    USB: hub: Fix handling of connect changes during sleep
    USB: hub: Revert commit bd0e6c9614b9 ("usb: hub: try old enumeration scheme first for high speed devices")
    USB: sisusbvga: Change port variable from signed to unsigned
    usb-storage: Add unusual_devs entry for JMicron JMS566
    usb: typec: altmode: Fix typec_altmode_get_partner sometimes returning an invalid pointer
    usb: typec: tcpm: Ignore CC and vbus changes in PORT_RESET change
    virtio-blk: improve virtqueue error to BLK_STS
    vmalloc: fix remap_vmalloc_range() bounds checks
    vrf: Check skb for XFRM_TRANSFORMED flag
    vrf: Fix IPv6 with qdisc and xfrm
    vt: don't hardcode the mem allocation upper bound
    vt: don't use kmalloc() for the unicode screen buffer
    vxlan: use the correct nlattr array in NL_SET_ERR_MSG_ATTR
    watchdog: reset last_hw_keepalive time at start
    xfrm: Always set XFRM_TRANSFORMED in xfrm{4,6}_output_finish
    xhci: Don't clear hub TT buffer on ep0 protocol stall
    xhci: Ensure link state is U3 after setting USB_SS_PORT_LS_U3
    xhci: Finetune host initiated USB3 rootport link suspend and resume
    xhci: Fix handling halted endpoint even if endpoint ring appears empty
    xhci: prevent bus suspend if a roothub port detected a over-current condition
    xhci: Wait until link state trainsits to U0 after setting USB_SS_PORT_LS_U0
Linux 5.4.37
    afs: Fix length of dump of bad YFSFetchStatus record
    afs: Fix to actually set AFS_SERVER_FL_HAVE_EPOCH
    afs: Make record checking use TASK_UNINTERRUPTIBLE when appropriate
    ALSA: hda: call runtime_allow() for all hda controllers
    ALSA: hda: Explicitly permit using autosuspend if runtime PM is supported
    ALSA: hda: Keep the controller initialization even if no codecs found
    ALSA: hda: Release resources at error in delayed probe
    arm64: Delete the space separator in __emit_inst
    ARM: dts: bcm283x: Disable dsi0 node
    ASoC: meson: axg-card: fix codec-to-codec link setup
    ASoC: q6dsp6: q6afe-dai: add missing channels to MI2S DAIs
    ASoC: soc-core: disable route checks for legacy devices
    ASoC: stm32: sai: fix sai probe
    ASoC: stm32: spdifrx: fix regmap status check
    ASoC: tas571x: disable regulators on failed probe
    ASoC: wm8960: Fix wrong clock after suspend & resume
    blk-iocost: Fix error on iocost_ioc_vrate_adj
    blk-mq: Put driver tag in blk_mq_dispatch_rq_list() when no budget
    bpf: Forbid XADD on spilled pointers for unprivileged users
    bpf, x86_32: Fix clobbering of dst for BPF_JSET
    bpf, x86_32: Fix incorrect encoding in BPF_LDX zero-extension
    bpf, x86_32: Fix logic error in BPF_LDX zero-extension
    bpf, x86: Fix encoding for lower 8-bit registers in BPF_STX BPF_B
    counter: 104-quad-8: Add lock guards - generic interface
    cpumap: Avoid warning when CONFIG_DEBUG_PER_CPU_MAPS is enabled
    Crypto: chelsio - Fixes a hang issue during driver registration
    drivers: soc: xilinx: fix firmware driver Kconfig dependency
    ext4: check for non-zero journal inum in ext4_calculate_overhead
    ext4: convert BUG_ON's to WARN_ON's in mballoc.c
    ext4: increase wait time needed before reuse of deleted inode numbers
    ext4: use matching invalidatepage in ext4_writepage
    hwmon: (jc42) Fix name to have no illegal characters
    i2c: altera: use proper variable to hold errno
    iio:ad7797: Use correct attribute_group
    kbuild: fix DT binding schema rule again to avoid needless rebuilds
    libbpf: Initialize *nl_pid so gcc 10 is happy
    mac80211: fix channel switch trigger from unknown mesh peer
    mm: shmem: disable interrupt when acquiring info->lock in userfaultfd_copy path
    net/cxgb4: Check the return from t4_query_params properly
    net: fec: set GPR bit on suspend by DT configuration.
    netfilter: nat: fix error handling upon registering inet hook
    net/mlx5e: Don't trigger IRQ multiple times on XSK wakeup to avoid WQ overruns
    net/mlx5e: Get the latest values from counters in switchdev mode
    net/mlx5: Fix failing fw tracer allocation on s390
    net: stmmac: socfpga: Allow all RGMII modes
    net: use indirect call wrappers for skb_copy_datagram_iter()
    nfsd: memory corruption in nfsd4_lock()
    objtool: Fix CONFIG_UBSAN_TRAP unreachable warnings
    objtool: Support Clang non-section symbols in ORC dump
    PCI: Add ACS quirk for Zhaoxin multi-function devices
    PCI: Add ACS quirk for Zhaoxin Root/Downstream Ports
    PCI: Add Zhaoxin Vendor ID
    PCI: Avoid ASMedia XHCI USB PME# from D0 defect
    PCI: Make ACS quirk implementations more uniform
    PCI: Move Apex Edge TPU class quirk to fix BAR assignment
    PCI: Unify ACS quirk desired vs provided checking
    perf/core: fix parent pid/tid in task exit events
    PM: sleep: core: Switch back to async_schedule_dev()
    printk: queue wake_up_klogd irq_work only if per-CPU areas are ready
    propagate_one(): mnt_set_mountpoint() needs mount_lock
    qed: Fix race condition between scheduling and destroying the slowpath workqueue
    qed: Fix use after free in qed_chain_free
    remoteproc: Fix wrong rvring index computation
    rxrpc: Fix DATA Tx to disable nofrag for UDP on AF_INET6 socket
    s390/ftrace: fix potential crashes when switching tracers
    s390/pci: do not set affinity for floating irqs
    sched/core: Fix reset-on-fork from RT with uclamp
    scsi: target: fix PR IN / READ FULL STATUS for FC
    scsi: target: tcmu: reset_ring should reset TCMU_DEV_BIT_BROKEN
    signal: check sig before setting info in kill_pid_usb_asyncio
    svcrdma: Fix leak of svc_rdma_recv_ctxt objects
    svcrdma: Fix trace point use-after-free race
    taprio: do not use BIT() in TCA_TAPRIO_ATTR_FLAG_* definitions
    ubifs: Fix ubifs_tnc_lookup() usage in do_kill_orphans()
    um: ensure `make ARCH=um mrproper` removes arch/$(SUBARCH)/include/generated/
    usb: dwc3: gadget: Do link recovery for SS and SSP
    usb: gadget: udc: atmel: Fix vbus disconnect handling
    usb: gadget: udc: bdc: Remove unnecessary NULL checks in bdc_req_complete
    x86: hyperv: report value of misc_features
    xen/xenbus: ensure xenbus_map_ring_valloc() returns proper grant status
    xfs: acquire superblock freeze protection on eofblocks scans
    xfs: clear PF_MEMALLOC before exiting xfsaild thread
    xfs: fix partially uninitialized structure in xfs_reflink_remap_extent
Linux 5.4.38
    Revert "ASoC: meson: axg-card: fix codec-to-codec link setup"
Linux 5.4.39
    ALSA: hda/hdmi: fix without unlocked before return
    ALSA: hda/realtek - Two front mics on a Lenovo ThinkCenter
    ALSA: line6: Fix POD HD500 audio playback
    ALSA: opti9xx: shut up gcc-10 range warning
    ALSA: pcm: oss: Place the plugin buffer overflow checks correctly
    ALSA: usb-audio: Correct a typo of NuPrime DAC-10 USB ID
    arm64: vdso: Add -fasynchronous-unwind-tables to cflags
    ARM: dts: imx6qdl-sr-som-ti: indicate powering off wifi is safe
    btrfs: fix block group leak when removing fails
    btrfs: fix partial loss of prealloc extent past i_size after fsync
    btrfs: fix transaction leak in btrfs_recover_relocation
    btrfs: transaction: Avoid deadlock due to bad initialization timing of fs_info::journal_info
    crypto: caam - fix the address of the last entry of S/G
    dlmfs_file_write(): fix the bogosity in handling non-zero *ppos
    dma-buf: Fix SET_NAME ioctl uapi
    dmaengine: dmatest: Fix iteration non-stop logic
    dmaengine: dmatest: Fix process hang when reading 'wait' parameter
    dm multipath: use updated MPATHF_QUEUE_IO on mapping for bio-based mpath
    dm verity fec: fix hash block number in verity_fec_decode
    dm writecache: fix data corruption when reloading the target
    Drivers: hv: vmbus: Fix Suspend-to-Idle for Generation-2 VM
    drm/amd/display: Fix green screen issue after suspend
    drm/edid: Fix off-by-one in DispID DTD pixel clock
    drm/qxl: qxl_release leak in qxl_draw_dirty_fb()
    drm/qxl: qxl_release leak in qxl_hw_surface_alloc()
    drm/qxl: qxl_release use after free
    Fix use after free in get_tree_bdev()
    i2c: amd-mp2-pci: Fix Oops in amd_mp2_pci_init() error handling
    i2c: aspeed: Avoid i2c interrupt status clear race condition.
    i2c: iproc: generate stop event for slave writes
    IB/rdmavt: Always return ERR_PTR from rvt_create_mmap_info()
    iommu/amd: Fix legacy interrupt remapping for x2APIC-enabled system
    iommu/qcom: Fix local_base status check
    mmc: cqhci: Avoid false "cqhci: CQE stuck on" by not open-coding timeout loop
    mmc: meson-mx-sdio: remove the broken ->card_busy() op
    mmc: meson-mx-sdio: Set MMC_CAP_WAIT_WHILE_BUSY
    mmc: sdhci-msm: Enable host capabilities pertains to R1b response
    mmc: sdhci-pci: Fix eMMC driver strength for BYT-based controllers
    mmc: sdhci-xenon: fix annoying 1.8V regulator warning
    nfs: Fix potential posix_acl refcnt leak in nfs3_set_acl
    NFSv4.1: fix handling of backchannel binding in BIND_CONN_TO_SESSION
    nvme: prevent double free in nvme_alloc_ns() error handling
    PM: ACPI: Output correct message on target power state
    PM: hibernate: Freeze kernel threads in software_resume()
    RDMA/cm: Fix an error check in cm_alloc_id_priv()
    RDMA/cm: Fix ordering of xa_alloc_cyclic() in ib_create_cm_id()
    RDMA/core: Fix race between destroy and release FD object
    RDMA/core: Prevent mixed use of FDs between shared ufiles
    RDMA/mlx4: Initialize ib_spec on the stack
    RDMA/mlx5: Set GRH fields in query QP on RoCE
    RDMA/siw: Fix potential siw_mem refcnt leak in siw_fastreg_mr()
    scsi: qla2xxx: check UNLOADING before posting async work
    scsi: qla2xxx: set UNLOADING before waiting for session deletion
    scsi: target/iblock: fix WRITE SAME zeroing
    selinux: properly handle multiple messages in selinux_netlink_send()
    vfio: avoid possible overflow in vfio_iommu_type1_pin_pages
    vfio/type1: Fix VA->PA translation for PFNMAP VMAs in vaddr_get_pfn()
Linux 5.4.40
    ACPI: PM: s2idle: Fix comment in acpi_s2idle_prepare_late()
    ALSA: hda: Match both PCI ID and SSID for driver blacklist
    ASoC: codecs: hdac_hdmi: Fix incorrect use of list_for_each_entry
    ASoC: rsnd: Don't treat master SSI in multi SSI setup as parent
    ASoC: rsnd: Fix HDMI channel mapping for multi-SSI mode
    ASoC: rsnd: Fix parent SSI start/stop in multi-SSI mode
    ASoC: rsnd: Fix "status check failed" spam for multi-SSI
    ASoC: sgtl5000: Fix VAG power-on handling
    ASoC: topology: Check return value of pcm_new_ver
    ASoC: topology: Check return value of soc_tplg_*_create
    ASoC: topology: Check return value of soc_tplg_create_tlv
    ASoC: topology: Check return value of soc_tplg_dai_config
    ASoC: topology: Check soc_tplg_add_route return value
    ASoC: topology: Fix endianness issue
    cgroup, netclassid: remove double cond_resched
    cifs: do not share tcons with DFS
    cifs: protect updating server->dstaddr with a spinlock
    drm/amdgpu: Correctly initialize thermal controller for GPUs with Powerplay table v0 (e.g Hawaii)
    drm/amdgpu: Fix oops when pp_funcs is unset in ACPI event
    drm/bridge: analogix_dp: Split bind() into probe() and real bind()
    drm/i915: Extend WaDisableDARBFClkGating to icl,ehl,tgl
    hexagon: clean up ioremap
    hexagon: define ioremap_uc
    libbpf: Fix readelf output parsing for Fedora
    lib: devres: add a helper function for ioremap_uc
    lib/mpi: Fix building for powerpc with clang
    mac80211: add ieee80211_is_any_nullfunc()
    mac80211: sta_info: Add lockdep condition for RCU list usage
    mfd: intel-lpss: Use devm_ioremap_uc for MMIO
    mm/mremap: Add comment explaining the untagging behaviour of mremap()
    net: bcmgenet: suppress warnings on failed Rx SKB allocations
    net: stmmac: fix enabling socfpga's ptp_ref_clock
    net: stmmac: Fix sub-second increment
    net: systemport: suppress warnings on failed Rx SKB allocations
    platform/x86: GPD pocket fan: Fix error message when temp-limits are out of range
    PM / devfreq: Add missing locking while setting suspend_freq
    remoteproc: qcom_q6v5_mss: fix a bug in q6v5_probe()
    Revert "drm/amd/display: setting the DIG_MODE to the correct value."
    Revert "software node: Simplify software_node_release() function"
    scripts/config: allow colons in option strings for sed
    sctp: Fix SHUTDOWN CTSN Ack in the peer restart case
    selftests/ipc: Fix test failure seen after initial test run
    tools headers UAPI: Sync copy of arm64's asm/unistd.h with the kernel sources
    tracing: Fix memory leaks in trace_events_hist.c
    udp: document udp_rcv_segment special case for looped packets
    usb: dwc3: gadget: Properly set maxpacket limit
    vhost: vsock: kick send_pkt worker once device is started
    wimax/i2400m: Fix potential urb refcnt leak
    x86/kvm: fix a missing-prototypes "vmread_error"
```
2020-05-10 18:40:30 +03:00

1454 lines
45 KiB
RPMSpec

# _get_email() in %%build contains bashisms for regexping
%define _buildshell /bin/bash
# Prevent RPM scripts from stripping signatures,
# we strip binaries manually in %%build
%define __strip %(which true)
%define kernelversion 5
%define patchlevel 4
# sublevel is used for stable-based kernels
%define sublevel 40
# Release number. Increase this before a rebuild.
%define rpmrel 1
%define fullrpmrel %{rpmrel}
%define rpmtag %{disttag}
# fakerel and fakever never change, they are used to fool
# rpm/urpmi/smart and ensure the kernels are installed,
# not upgraded so old kernel is not overwritten or removed
%define fakever 1
%define fakerel %mkrel 1
# version defines
%define kversion %{kernelversion}.%{patchlevel}.%{sublevel}
%define kverrel %{kversion}-%{fullrpmrel}
%define tar_ver %{kernelversion}.%{patchlevel}
%ifarch %{ix86}
# Use a standard suffix for 32-bit x86
%define arch_suffix i586
%else
%define arch_suffix %{_arch}
%endif
%define buildrpmrel %{fullrpmrel}%{rpmtag}-%{arch_suffix}
%define buildrel %{kversion}-%{buildrpmrel}
# %%build_selinux may be defined in branding-configs
#%%{?build_selinux}%{?!build_selinux:%bcond_with selinux}
#%%if %{with selinux}
%global enhanced_security 1
#%%else
#%%global enhanced_security 0
#%%endif
# Allow "rpmbuild --without enhanced_security <...>"
%{?_without_enhanced_security:%global enhanced_security 0}
%if %{enhanced_security}
%bcond_without additional_keys
%bcond_with oblig_signed_modules
%endif
# User Mode Linux, https://habr.com/ru/company/itsumma/blog/459558/
%bcond_without uml
# "Nickel" is a special brand for certified distros
# gost_sign will probably be enabled outside of Nickel later,
# but for now let's better do not make such experiments in stable platforms
%if %{mdvver} == 201900 || %{mdvver} == 201905
%bcond_without nickel
%bcond_without gost_sign
%else
%bcond_with nickel
%bcond_with gost_sign
%endif
# Kernel flavour
%if %{with nickel}
%define flavour nickel
%else
%define flavour generic
%endif
# The full kernel version
%define kver_full %{kversion}-%{flavour}-%{buildrpmrel}
############################################################################
%define top_dir_name kernel-%{_arch}
%define build_dir ${RPM_BUILD_DIR}/%{top_dir_name}
%define src_dir %{build_dir}/linux-%{tar_ver}
# Common target directories
%define _bootdir /boot
%define _modulesdir /lib/modules
%define devel_root /usr/src/linux-%{kver_full}
# Directories needed for building
%define temp_root %{build_dir}/temp-root
%define temp_boot %{temp_root}%{_bootdir}
%define temp_modules %{temp_root}%{_modulesdir}
%define temp_devel_root %{temp_root}%{devel_root}
# Directories definition needed for installing
%define target_boot %{buildroot}%{_bootdir}
%define target_modules %{buildroot}%{_modulesdir}
# Manual control of creating and deleting keys
# "rnd" is "random" and means that a key pair is generated at build time
# and is not saved anywhere.
%define certs_dir_rnd certs
%define certs_signing_key_priv_rnd %{certs_dir_rnd}/signing_key_priv.key
%define certs_signing_der %{certs_dir_rnd}/signing_key.x509
%define certs_key_config_rnd %{certs_dir_rnd}/x509.genkey
%define certs_public_keys %{certs_dir_rnd}/public.pem
%define certs_verify_tmp %{certs_dir_rnd}/verify.tmp
############################################################################
# Build defines
%define build_doc 0
%define build_devel 1
%define build_debug 1
# Build kernel-headers package
# Make headers of this kernel not default for rosa2016.1
%if %{mdvver} <= 201610
%define build_headers 0
%else
%define build_headers 1
%endif
# build perf and cpupower tools
%define build_perf 1
%define build_cpupower 1
# compress modules with xz
%define build_modxz 1
# End of user definitions
# buildtime flags
%{?_without_doc: %global build_doc 0}
%{?_without_devel: %global build_devel 0}
%{?_without_debug: %global build_debug 0}
%{?_without_perf: %global build_perf 0}
%{?_without_cpupower: %global build_cpupower 0}
%{?_without_modxz: %global build_modxz 0}
%{?_with_doc: %global build_doc 1}
%{?_with_devel: %global build_devel 1}
%{?_with_debug: %global build_debug 1}
%{?_with_perf: %global build_perf 1}
%{?_with_cpupower: %global build_cpupower 1}
%{?_with_modxz: %global build_modxz 1}
%if !%{build_debug}
# Disable debug rpms.
%define _enable_debug_packages %{nil}
%define debug_package %{nil}
%endif
%if %(if [ -z "$CC" ] ; then echo 0; else echo 1; fi)
%define kmake %make CC="$CC"
%else
%define kmake %make
%endif
# there are places where parallel make don't work
%define smake make
# Parallelize xargs invocations on smp machines
%define kxargs xargs %([ -z "$RPM_BUILD_NCPUS" ] \\\
&& RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
[ "$RPM_BUILD_NCPUS" -gt 1 ] && echo "-P $RPM_BUILD_NCPUS")
#
# SRC RPM description
#
Summary: The Linux kernel
Name: kernel
Version: %{kversion}
Release: %{fullrpmrel}
License: GPLv2
Group: System/Kernel and hardware
ExclusiveArch: %{ix86} x86_64
URL: http://www.kernel.org
####################################################################
#
# Sources
#
Source0: https://cdn.kernel.org/pub/linux/kernel/v%{kernelversion}.x/linux-%{tar_ver}.tar.xz
# This is for disabling *config, mrproper, prepare, scripts on -devel rpms
# Needed, because otherwise the -devel won't build correctly.
Source2: disable-mrproper-prepare-scripts-configs-in-devel-rpms.patch
# Kernel configuration files.
Source110: kernel-%{arch_suffix}.config
# Cpupower: the service, the config, etc.
Source50: cpupower.service
Source51: cpupower.config
Source52: cpupower-start.sh
Source53: cpupower.path
Source80: kernel.rpmlintrc
# Additional keys that can be used to sign kernel modules
# Generated by https://abf.io/soft/kernel-keys
# Source201..206: public_key_GOST_*.pem
%{expand:%(for i in `seq 1 6`; do echo "Source$((200+${i})): public_key_GOST_${i}.pem"; done)}
# Source207..212: public_key_RSA_*.pem
%{expand:%(for i in `seq 7 12`; do echo "Source$((200+${i})): public_key_RSA_${i}.pem"; done)}
####################################################################
# Patches
# The patch to make kernel x.y.z from x.y.0.
Patch1: https://cdn.kernel.org/pub/linux/kernel/v%{kernelversion}.x/patch-%{kversion}.xz
# Patches from mainline
# none
# ROSA-specific patches
# Perf docs are built after all the kernels. To validate the xml files
# generated during that process, xmlto tries to get DTD files from the Net.
# If it fails, the whole build fails, which is unfortunate. Let us avoid
# this.
Patch101: perf-xmlto-skip-validation.patch
# http://bugs.rosalinux.ru/show_bug.cgi?id=6235
# http://bugs.rosalinux.ru/show_bug.cgi?id=6459
Patch102: audit-make-it-less-verbose.patch
# AUFS from http://aufs.sourceforge.net/
Patch109: fs-aufs.patch
# AltHa LSM Module
# https://www.altlinux.org/AltHa
# http://git.altlinux.org/gears/k/kernel-image-un-def.git
# TODO: known problem: https://bugzilla.altlinux.org/show_bug.cgi?id=38225
Patch201: 0001-AltHa-LSM-module.patch
Patch202: 0002-Documentation-for-AltHa-LSM.patch
# Other patches
Patch301: objtool-sync-check.sh-set-the-exit-code-explicitly.patch
# sent to upstream, https://patchwork.kernel.org/patch/11446123/
Patch302: 0001-sign-file-full-functionality-with-modern-LibreSSL.patch
# Disable AutoReq
AutoReq: 0
# but keep autoprov for kmod(xxx)
AutoProv: 1
BuildRequires: bash
BuildRequires: bc
BuildRequires: binutils
BuildRequires: gcc
# For power tools
BuildRequires: pkgconfig(ncurses)
BuildRequires: kmod-devel kmod-compat
BuildRequires: bison
BuildRequires: flex
BuildRequires: bzip2
BuildRequires: rsync
%ifarch x86_64
BuildRequires: numa-devel
%endif
# for perf, cpufreq and all other tools
# for cpupower
%if %{build_cpupower}
BuildRequires: pciutils-devel
%endif
# for perf
%if %{build_perf}
BuildRequires: asciidoc
BuildRequires: audit-devel
BuildRequires: binutils-devel
BuildRequires: elfutils-devel
BuildRequires: libunwind-devel
BuildRequires: newt-devel
BuildRequires: perl-devel
BuildRequires: pkgconfig(python)
BuildRequires: xmlto
BuildRequires: zlib-devel
BuildRequires: pkgconfig(libcrypto)
%endif
%if %{enhanced_security}
# (To generate keys)
# LibreSSL has GOST support without editing openssl.cnf
# or dlopen()-ing external library
BuildRequires: libressl libressl-devel
# To verify signatures (find, xargs, hexdump)
BuildRequires: findutils util-linux
%endif
# might be useful too:
Recommends: microcode
%description
The kernel package contains the Linux kernel (vmlinuz), the core of your
operating system. The kernel handles the basic functions
of the operating system: memory allocation, process allocation, device
input and output, etc.
############################################################################
%package -n kernel-%{flavour}-%{buildrel}
Version: %{fakever}
Release: %{fakerel}
Provides: kernel = %{kverrel}
Provides: kernel = %{kernelversion}.%{patchlevel}
Provides: kernel-%{flavour} = %{kverrel}
%if %{enhanced_security}
Provides: kernel-hardened = %{kverrel}
Provides: kernel-hardened = %{kernelversion}.%{patchlevel}
Provides: kernel-hardened-%{flavour} = %{kverrel}
%endif
Provides: alsa = 1.0.27
Provides: should-restart = system
Requires(pre): grub2
Requires(pre): dracut >= 046
Requires(pre): kmod >= 20-1
Requires(pre): sysfsutils >= 2.1.0-12
Requires: dracut >= 046
Requires: linux-firmware >= 20181026
Requires: wireless-regdb
Recommends: crda
%if %build_devel
Requires: kernel-%{flavour}-devel-%{buildrel}
Requires(post): kernel-%{flavour}-devel-%{buildrel}
%endif
%ifarch %{ix86}
Conflicts: arch(x86_64)
%endif
Summary: A general-purpose Linux Kernel
Group: System/Kernel and hardware
%description -n kernel-%{flavour}-%{buildrel}
The kernel package contains the Linux kernel (vmlinuz), the core of your
operating system. The kernel handles the basic functions
of the operating system: memory allocation, process allocation, device
input and output, etc. This is a general-purpose kernel.
%post -n kernel-%{flavour}-%{buildrel}
# We always regenerate initrd here, even if it already exists. This may
# happen if kernel-<...>-devel is installed first, triggers rebuild of
# DKMS modules and some of these request remaking of initrd. The initrd
# that is created then will be non-functional. But when the user installs
# kernel-<...> package, that defunct initrd will be replaced with a working
# one here.
#
# depmod is also needed, because some DKMS-modules might have been installed
# when the devel package was installed but that was before the main modules
# were installed.
# This is also the reason the devel package is in Requires(post) for this
# package now: it must be installed completely before we call depmod here.
/sbin/depmod -a %{kver_full}
/sbin/dracut -f /boot/initrd-%{kver_full}.img %{kver_full}
# File triggers from grub packages will handle this.
#/usr/sbin/update-grub2
pushd /boot > /dev/null
if [ -L vmlinuz-%{flavour} ]; then
rm -f vmlinuz-%{flavour}
fi
if [ -L initrd-%{flavour}.img ]; then
rm -f initrd-%{flavour}.img
fi
popd > /dev/null
exit 0
%preun -n kernel-%{flavour}-%{buildrel}
pushd /boot > /dev/null
if [ -L vmlinuz-%{flavour} ]; then
if [ "$(readlink vmlinuz-%{flavour})" = "vmlinuz-%{kver_full}" ]; then
rm -f vmlinuz-%{flavour}
fi
fi
if [ -L initrd-%{flavour}.img ]; then
if [ "$(readlink initrd-%{flavour}.img)" = "initrd-%{kver_full}.img" ]; then
rm -f initrd-%{flavour}.img
fi
fi
# File triggers from grub packages will handle this.
#/usr/sbin/update-grub2
popd > /dev/null
exit 0
%postun -n kernel-%{flavour}-%{buildrel}
rm -f /boot/initrd-%{kver_full}.img
rm -f /boot/initrd-%{kver_full}_old.img
rm -f /boot/initrd-%{kver_full}kdump.img
rm -f /boot/initramfs-%{kver_full}kdump.img
# Third-party modules might have left something in /lib/modules/.../kernel/.
rm -rf /lib/modules/%{kver_full}/kernel/
rm -rf /lib/modules/%{kver_full}/modules*
# Remove /lib/modules/<...>/ if it is empty (-devel uses it too).
find /lib/modules/%{kver_full} -maxdepth 0 -empty -exec rm -rf {} \; || true
%files -n kernel-%{flavour}-%{buildrel} -f kernel_files.%{flavour}
############################################################################
%if %build_devel
%package -n kernel-%{flavour}-devel-%{buildrel}
Version: %{fakever}
Release: %{fakerel}
Summary: Development files for kernel-%{flavour}-%{buildrel}
Group: Development/Kernel
Requires: glibc-devel
Requires: ncurses-devel
Requires: make
Requires: gcc
Requires: perl
Provides: kernel-devel = %{kverrel}
Provides: kernel-%{flavour}-devel = %{kverrel}
%if %{enhanced_security}
Provides: kernel-hardened-devel = %{kverrel}
Provides: kernel-hardened-%{flavour}-devel = %{kverrel}
%endif
%ifarch %{ix86}
Conflicts: arch(x86_64)
%endif
%description -n kernel-%{flavour}-devel-%{buildrel}
This package contains the kernel files (headers and build tools)
that should be enough to build additional drivers for
use with kernel-%{flavour}-%{buildrel}.
%post -n kernel-%{flavour}-devel-%{buildrel}
if ! command -v dkms >/dev/null 2>&1; then exit 0; fi
/usr/sbin/dkms_autoinstaller start %{kver_full}
%preun -n kernel-%{flavour}-devel-%{buildrel}
# If any DKMS modules with REMAKE_INITRD=yes in their configs have been
# uninstalled, initrd has been regenerated for the given kernel. However,
# the kernel itself might have been uninstalled before, so that (defunct)
# initrd image files would be left behind. Remove them if the kernel itself
# is no longer installed. Should work if they are uninstalled in parallel
# too.
if ! test -f /boot/vmlinuz-%{kver_full}; then
rm -f /boot/initrd-%{kver_full}.img
rm -f /boot/initrd-%{kver_full}_old.img
fi
if ! command -v dkms >/dev/null 2>&1; then exit 0; fi
for ii in $(/usr/sbin/dkms status -k %{kver_full} | awk '{ print $1 $2; }'); do
mod=$(echo $ii | awk -v FS=',' '{ print $1; }')
ver=$(echo $ii | awk -v FS=',' '{ print $2; }')
/usr/sbin/dkms --rpm_safe_upgrade uninstall -m $mod -v $ver -k %{kver_full} || :
done
%postun -n kernel-%{flavour}-devel-%{buildrel}
rm -rf /usr/src/linux-%{kver_full} >/dev/null
# depmod (called when removing DKMS modules) might have created files in
# /lib/modules/.../. Remove these first.
rm -rf /lib/modules/%{kver_full}/modules*
# Remove the dir if it is already empty.
find /lib/modules/%{kver_full} -maxdepth 0 -empty -exec rm -rf {} \; || true
%files -n kernel-%{flavour}-devel-%{buildrel}
%dir %{devel_root}
%dir %{devel_root}/arch
%dir %{devel_root}/include
%{devel_root}/Documentation
%{devel_root}/arch/um
%{devel_root}/arch/x86
%{devel_root}/block
%{devel_root}/certs
%{devel_root}/crypto
%{devel_root}/drivers
%{devel_root}/fs
%{devel_root}/include/acpi
%{devel_root}/include/asm-generic
%{devel_root}/include/clocksource
%{devel_root}/include/config
%{devel_root}/include/crypto
%{devel_root}/include/drm
%{devel_root}/include/dt-bindings
%{devel_root}/include/generated
%{devel_root}/include/keys
%{devel_root}/include/kvm
%{devel_root}/include/linux
%{devel_root}/include/math-emu
%{devel_root}/include/media
%{devel_root}/include/misc
%{devel_root}/include/net
%{devel_root}/include/pcmcia
%{devel_root}/include/ras
%{devel_root}/include/rdma
%{devel_root}/include/scsi
%{devel_root}/include/sound
%{devel_root}/include/target
%{devel_root}/include/trace
%{devel_root}/include/uapi
%{devel_root}/include/vdso
%{devel_root}/include/video
%{devel_root}/include/xen
%{devel_root}/init
%{devel_root}/ipc
%{devel_root}/kernel
%{devel_root}/lib
%{devel_root}/mm
%{devel_root}/net
%{devel_root}/samples
%{devel_root}/scripts
%{devel_root}/security
%{devel_root}/sound
%{devel_root}/tools
%{devel_root}/usr
%{devel_root}/virt
%{devel_root}/.config
%{devel_root}/Kbuild
%{devel_root}/Kconfig
%{devel_root}/Makefile
%{devel_root}/Module.symvers
%{devel_root}/arch/Kconfig
%{_modulesdir}/%{kver_full}/build
%{_modulesdir}/%{kver_full}/source
%endif
############################################################################
%if %build_debug
%package -n kernel-%{flavour}-%{buildrel}-debuginfo
Version: %{fakever}
Release: %{fakerel}
Summary: Debuginfo for kernel-%{flavour}-%{buildrel}
Group: Development/Debug
Provides: kernel-debug = %{kverrel}
%if %{enhanced_security}
Provides: kernel-hardened-debug = %{kverrel}
%endif
%ifarch %{ix86}
Conflicts: arch(x86_64)
%endif
%description -n kernel-%{flavour}-%{buildrel}-debuginfo
This package contains the files with debuginfo for kernel-%{flavour}-%{buildrel}.
%files -n kernel-%{flavour}-%{buildrel}-debuginfo -f kernel_debug_files.%{flavour}
%endif
############################################################################
%package -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-latest
Version: %{kversion}
Release: %{fullrpmrel}
Summary: Meta package for the latest kernel-%{flavour} in %{kernelversion}.%{patchlevel} series
Group: System/Kernel and hardware
Requires: kernel-%{flavour}-%{buildrel}
%ifarch %{ix86}
Conflicts: arch(x86_64)
%endif
%description -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-latest
This meta package aims to make sure you always have the
latest kernel-%{flavour} %{kernelversion}.%{patchlevel}.x installed.
%files -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-latest
# no files
############################################################################
%if %build_devel
%package -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-devel-latest
Version: %{kversion}
Release: %{fullrpmrel}
Summary: Meta package for the latest kernel-%{flavour}-devel in %{kernelversion}.%{patchlevel} series
Group: Development/Kernel
Requires: kernel-%{flavour}-devel-%{buildrel}
%ifarch %{ix86}
Conflicts: arch(x86_64)
%endif
Provides: kernel-devel-latest
%if %{enhanced_security}
Provides: kernel-hardened-devel-latest
%endif
%description -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-devel-latest
This meta package aims to make sure you always have the
latest kernel-%{flavour}-devel %{kernelversion}.%{patchlevel}.x installed.
%files -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-devel-latest
# no files
%endif
############################################################################
%if %build_doc
%package -n kernel-doc
Version: %{kversion}
Release: %{fullrpmrel}
Summary: Various documentation bits found in the kernel source
Group: Documentation
Buildarch: noarch
%description -n kernel-doc
This package contains documentation files from the kernel source.
%files -n kernel-doc
%doc linux-%{tar_ver}/Documentation/*
%endif
############################################################################
%if %{build_perf}
%package -n perf
Version: %{kversion}
Release: %{fullrpmrel}
Summary: perf tool and the supporting documentation
Group: System/Kernel and hardware
%description -n perf
The package contains perf tool and the supporting documentation.
%files -n perf
%{_bindir}/perf
%ifarch x86_64
%{_bindir}/perf-read-vdso32
%endif
%{_bindir}/trace
%dir %{_prefix}/libexec/perf-core
%dir %{_libdir}/traceevent
%dir %{_libdir}/traceevent/plugins
%{_libdir}/traceevent/plugins/*
%{_prefix}/libexec/perf-core/*
%{_mandir}/man[1-8]/perf*
%{_sysconfdir}/bash_completion.d/perf
%{_datadir}/perf-core/strace/groups/*
%{_datadir}/doc/perf-tip/*.txt
/usr/lib/perf/examples/bpf/*
/usr/lib/perf/include/bpf/*
%endif
############################################################################
%if %{build_cpupower}
%package -n cpupower
Version: %{kversion}
Release: %{fullrpmrel}
Summary: The cpupower tools
Group: System/Kernel and hardware
Requires(post): rpm-helper >= 0.24.0-3
Requires(preun): rpm-helper >= 0.24.0-3
Obsoletes: cpufreq < 3.0
Obsoletes: cpufrequtils < 10.0
%description -n cpupower
The cpupower tools.
%post -n cpupower
if [ $1 -ge 0 ]; then
# Do not enable/disable cpupower.service directly, because it should start
# when cpupower.path triggers it.
/bin/systemctl enable cpupower.path >/dev/null 2>&1 || :
/bin/systemctl start cpupower.path >/dev/null 2>&1 || :
fi
%preun -n cpupower
if [ $1 -eq 0 ]; then
/bin/systemctl --no-reload disable cpupower.path > /dev/null 2>&1 || :
/bin/systemctl stop cpupower.path > /dev/null 2>&1 || :
fi
%files -n cpupower -f cpupower.lang
%{_bindir}/cpupower
%{_bindir}/cpupower-start.sh
%{_libdir}/libcpupower.so.0
%{_libdir}/libcpupower.so.0.0.1
%{_unitdir}/cpupower.service
%{_unitdir}/cpupower.path
%{_datadir}/bash-completion/completions/cpupower
%{_mandir}/man[1-8]/cpupower*
%config(noreplace) %{_sysconfdir}/sysconfig/cpupower
############################################################################
%package -n cpupower-devel
Version: %{kversion}
Release: %{fullrpmrel}
Summary: Development files for cpupower
Group: Development/Kernel
Requires: cpupower = %{kversion}-%{fullrpmrel}
Conflicts: %{_lib}cpufreq-devel
%description -n cpupower-devel
This package contains the development files for cpupower.
%files -n cpupower-devel
%{_libdir}/libcpupower.so
%{_includedir}/cpufreq.h
%{_includedir}/cpuidle.h
%endif
############################################################################
%if %{build_headers}
%package headers
Version: %kversion
Release: %fullrpmrel
Summary: Linux kernel header files mostly used by your C library
Group: System/Kernel and hardware
Epoch: 1
Provides: linux-userspace-headers = %{EVRD}
Provides: kernel-release-headers = %{EVRD}
%description headers
C header files from the Linux kernel. The header files define
structures and constants that are needed for building most
standard programs, notably the C library.
This package is not suitable for building kernel modules, you
should use the 'kernel-devel' package instead.
%files headers
%{_includedir}/*
# Don't conflict with cpupower-devel
%if %{build_cpupower}
%exclude %{_includedir}/cpufreq.h
%exclude %{_includedir}/cpuidle.h
%endif
%endif
############################################################################
%if %{with uml}
%package -n kernel-uml-%{flavour}-%{buildrel}
Version: %{fakever}
Release: %{fakerel}
Provides: kernel-uml = %{kverrel}
Provides: kernel-uml-%{flavour} = %{kverrel}
Summary: User Mode Linux binary
Group: System/Kernel and hardware
%description -n kernel-uml-%{flavour}-%{buildrel}
User Mode Linux binary.
Stripped, debug is in kernel-%{flavour}-%{buildrel}-debuginfo.
%files -n kernel-uml-%{flavour}-%{buildrel}
%{_bindir}/linux-uml-%{kver_full}
#------------------------------------------------
%package -n kernel-uml-modules-%{flavour}-%{buildrel}
Version: %{fakever}
Release: %{fakerel}
Provides: kernel-uml-modules = %{kverrel}
Provides: kernel-uml-modules-%{flavour} = %{kverrel}
Summary: User Mode Linux (UML) kernel modules
Group: System/Kernel and hardware
%description -n kernel-uml-modules-%{flavour}-%{buildrel}
User Mode Linux (UML) kernel modules
- not compressed
- not stripped
- signed
%files -n kernel-uml-modules-%{flavour}-%{buildrel}
/lib/modules-uml/%{kver_full}
#------------------------------------------------
%package -n kernel-uml-%{flavour}-%{kernelversion}.%{patchlevel}-latest
Version: %{kversion}
Release: %{fullrpmrel}
Summary: Meta package for the latest kernel-uml-%{flavour} in %{kernelversion}.%{patchlevel} series
Group: System/Kernel and hardware
Requires: kernel-uml-%{flavour}-%{buildrel}
%ifarch %{ix86}
Conflicts: arch(x86_64)
%endif
%description -n kernel-uml-%{flavour}-%{kernelversion}.%{patchlevel}-latest
This meta package aims to make sure you always have the
latest kernel-uml-%{flavour} %{kernelversion}.%{patchlevel}.x
(User Mode Linux binary) installed.
%files -n kernel-uml-%{flavour}-%{kernelversion}.%{patchlevel}-latest
# no files
#------------------------------------------------
%package -n kernel-uml-modules-%{flavour}-%{kernelversion}.%{patchlevel}-latest
Version: %{kversion}
Release: %{fullrpmrel}
Summary: Meta package for the latest kernel-uml-modules-%{flavour} in %{kernelversion}.%{patchlevel} series
Group: System/Kernel and hardware
Requires: kernel-uml-modules-%{flavour}-%{buildrel}
%ifarch %{ix86}
Conflicts: arch(x86_64)
%endif
%description -n kernel-uml-modules-%{flavour}-%{kernelversion}.%{patchlevel}-latest
This meta package aims to make sure you always have the
latest kernel-uml-modules-%{flavour} %{kernelversion}.%{patchlevel}.x
(User Mode Linux kernel modules) installed.
%files -n kernel-uml-modules-%{flavour}-%{kernelversion}.%{patchlevel}-latest
# no files
#------------------------------------------------
%endif #endif uml
############################################################################
%prep
%setup -q -n %top_dir_name -c
%if %{with uml}
cp -r %{src_dir} %{src_dir}.uml
%endif
cd %src_dir
%apply_patches
#
# Setup Begin
#
# Kernel configuration
echo "Creating the kernel configuration file."
# Configs
cp %{SOURCE110} .config
# Disable ASLR for 32-bit systems because it does not play well with
# hibernate.
%ifarch %{ix86}
sed -i 's/CONFIG_RANDOMIZE_BASE=y/# CONFIG_RANDOMIZE_BASE is not set/' .config
%endif
# Disable checking for W+X memory mappings for 32-bit systems. The warnings
# may confuse the users and noone is eager to fix the underlying problem,
# it seems.
%ifarch %{ix86}
sed -i 's/CONFIG_DEBUG_WX=y/# CONFIG_DEBUG_WX is not set/' .config
%endif
# GCC 5.5 may not support -fstack-protector-* on 32-bit systems.
# Let us disable the stack protector in the config explicitly.
%ifarch %{ix86}
sed -i 's/CONFIG_STACKPROTECTOR=y/# CONFIG_STACKPROTECTOR is not set/' .config
sed -i 's/CONFIG_STACKPROTECTOR_STRONG=y/# CONFIG_STACKPROTECTOR_STRONG is not set/' .config
%endif
touch %{build_dir}/.config.append
# Enable debug info if requested.
sed -i '/CONFIG_DEBUG_INFO/d' .config
%if %build_debug
echo 'CONFIG_DEBUG_INFO=y' >> %{build_dir}/.config.append
echo 'CONFIG_DEBUG_INFO_DWARF4=y' >> %{build_dir}/.config.append
echo 'CONFIG_GDB_SCRIPTS=y' >> %{build_dir}/.config.append
%else
echo 'CONFIG_DEBUG_INFO=n' >> %{build_dir}/.config.append
%endif
%if %{enhanced_security}
### SELinux enablement
# seems to be needed to boot system in enforcing selinux mode
# note: cpio fpormat of initramfs does not support xattrs without patches
# see also: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1680315
sed -i '/CONFIG_SECURITY_SELINUX_DISABLE/d' .config
echo CONFIG_SECURITY_SELINUX_DISABLE=y >> %{build_dir}/.config.append
# enable selinux in kernel by default if not disabled explicitly
sed -i '/CONFIG_SECURITY_SELINUX_BOOTPARAM/d' .config
echo CONFIG_SECURITY_SELINUX_BOOTPARAM=y >> %{build_dir}/.config.append
### Signing kernel modules
# https://www.kernel.org/doc/html/v5.3/admin-guide/module-signing.html
sed -i '/CONFIG_MODULE_SIG/d' .config
echo CONFIG_MODULE_SIG=y >> %{build_dir}/.config.append
%if %{with oblig_signed_modules}
# Disallow loading not signed modules
echo CONFIG_MODULE_SIG_FORCE=y >> %{build_dir}/.config.append
%else
echo CONFIG_MODULE_SIG_FORCE=n >> %{build_dir}/.config.append
%endif
# If %%build_debig is true, signatures will be stripped
# We sign modules manually in a tricky way bellow
echo CONFIG_MODULE_SIG_ALL=n >> %{build_dir}/.config.append
# Set path to the key that will be generated later by openssl/libressl
echo CONFIG_MODULE_SIG_KEY=\"%{certs_signing_key_priv_rnd}\" >> %{build_dir}/.config.append
# Set path to one PEM file with all keys that the kernel must trust
sed -i '/CONFIG_SYSTEM_TRUSTED_KEYS/d' .config
echo CONFIG_SYSTEM_TRUSTED_KEYS=\"%{certs_public_keys}\" >> %{build_dir}/.config.append
# Reserve area for inserting a certificate without recompiling
sed -i '/CONFIG_SYSTEM_EXTRA_CERTIFICATE/d' .config
echo CONFIG_SYSTEM_EXTRA_CERTIFICATE=y >> %{build_dir}/.config.append
# Memory wiping
# Introduced in kernel 5.3 by commit 6471384af2a6530696fc0203bafe4de41a23c9ef
# Estimated performance impact is described in the commit
# "Fill newly allocated pages and heap objects with zeroes."
# To enable, add to cmdline: init_on_alloc=1
sed -i '/CONFIG_INIT_ON_ALLOC_DEFAULT_ON/d' .config
echo CONFIG_INIT_ON_ALLOC_DEFAULT_ON=n >> %{build_dir}/.config.append
# "Fill freed pages and heap objects with zeroes"
# To disable, add to cmdline: init_on_free=0
sed -i '/CONFIG_INIT_ON_FREE_DEFAULT_ON/d' .config
%if %{with nickel}
echo CONFIG_INIT_ON_FREE_DEFAULT_ON=y >> %{build_dir}/.config.append
%else
echo CONFIG_INIT_ON_FREE_DEFAULT_ON=n >> %{build_dir}/.config.append
%endif
# Here enabling only either only init_on_free or only init_on_alloc
# makes sense; init_on_alloc is not about protecting information.
# To load kernel keyring in UML
for i in STREEBOG SHA1 SHA256 SHA512 ECRDSA RSA ; do
sed -i "/CONFIG_CRYPTO_${i}/d" .config
echo "CONFIG_CRYPTO_${i}=y" >> %{build_dir}/.config.append
done
sed -i '/CONFIG_LSM/d' .config
echo 'CONFIG_LSM="yama,loadpin,integrity,selinux,apparmor,altha"' >> %{build_dir}/.config.append
sed -i '/CONFIG_SECURITY_ALTHA/d' .config
echo 'CONFIG_SECURITY_ALTHA=y' >> %{build_dir}/.config.append
%endif
cat %{build_dir}/.config.append >> .config
# Store the config file in the appropriate directory.
CONFIG_DIR=arch/x86/configs
mkdir -p "${CONFIG_DIR}"
cfg_file=arch/x86/configs/%{arch_suffix}_defconfig-%{flavour}
make ARCH=%{_arch} oldconfig && \
mv .config ${cfg_file}
# Looks like 'make oldconfig' removes '# CONFIG_64BIT is not set' for some
# reason. For now, let us restore it.
%ifarch %{ix86}
sed -i 's/CONFIG_64BIT=y//' ${cfg_file}
echo '# CONFIG_64BIT is not set' >> ${cfg_file}
%endif
echo "Created ${cfg_file}."
# make sure the kernel has the sublevel we know it has...
LC_ALL=C sed -ri "s/^SUBLEVEL.*/SUBLEVEL = %{sublevel}/" Makefile
# get rid of unwanted files
find . -name '*~' -o -name '*.orig' -o -name '*.append' | %kxargs rm -f
find . -name '.get_maintainer.ignore' | %kxargs rm -f
############################################################################
%build
# Ensure that build time generated private keys don't get published
# as e.g. "RPM build root" on ABF!
# Note that ABF sends SIGKILL to rpm-build.sh when the build is terminated;
# in this case trap will not work, but RPM build root also will not be
# saved because rpm-build.sh saves it, but it is SIGKILLed.
# For best security we could store private keys in RAM (not reachable from
# filesystem, so not in /tmp!) and override sth like fopen() by LD_PRELOAD
# to give the content of keys from RAM when a virtual address of a key file
# is accessed, but currently I don't know how to implement this (TODO: ).
_cleanup(){
# Show resulting kernel public keys for debugging
cat "%{src_dir}/%{certs_dir_rnd}/x509_certificate_list" | base64 -d || :
rm -fvr "%{src_dir}/%{certs_dir_rnd}"
%if %{with uml}
cat "%{src_dir}.uml/%{certs_dir_rnd}/x509_certificate_list" | base64 -d || :
rm -fvr "%{src_dir}.uml/%{certs_dir_rnd}"
%endif
}
# Make a trap to delete keys even if %%build fails in the middle
trap "_cleanup" EXIT
rm -rf %{temp_root}
install -d %{temp_root}
cd %src_dir
### Keys for signing kernel modules
# Keys can be generated both manually and automatically,
# let's generate them by ourselves to take full control of the process
# https://www.ibm.com/support/knowledgecenter/en/SSB23S_1.1.0.13/gtps7/cfgcert.html
# See also certs/Makefile in kernel source
%if %{enhanced_security}
mkdir -p "%{certs_dir_rnd}"
# On ABF, %%packager == $username <$email>
# Try to extract email from %%packager if it is set
_get_email(){
# Check that macro %%packager was set and is not empty
if echo '%{packager}' | grep -q 'packager}$' || [ -z "%{packager}" ]
# If was not set or is empty, use default email
then echo 'rpmbuild@rosa.unknown' && return
# Otherwise try to extract email from 'name <email>' or sth else
else temp="$(echo '%{packager}' | tr '[:upper:]' '[:lower:]' | tr ' ' '\n' | tr -d '<>' | grep -E '@.*\..*' | head -n 1)"
fi
# Validate that what we have now is a valid email
# https://stackoverflow.com/a/2138832, https://stackoverflow.com/a/41192733
# Note that we set %%_buildshell to /bin/bash to guarantee the work of this bashism
regex_email="^[a-z0-9!#\$%&'*+/=?^_\`{|}~-]+(\.[a-z0-9!#$%&'*+/=?^_\`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]([a-z0-9-]*[a-z0-9])?\$"
if [[ "$temp" =~ ${regex_email} ]]
# If it is, use it
then echo "$temp" && return
# Otherwise use default email
else echo 'rpmbuild@rosa.unknown' && return
fi
# If script above has not return'ed for any reason,
# e.g. because of non-bash shell being not able to
# process regexp, use default email
echo 'rpmbuild@rosa.unknown'
}
email="$(_get_email)"
cat <<EOF > "%{certs_key_config_rnd}"
[ req ]
prompt = no
string_mask = utf8only
#default_keyfile = %{certs_signing_key_priv_rnd}
distinguished_name = req_distinguished_name
x509_extensions = myexts
[ req_distinguished_name ]
organizationName = %{vendor} rpmbuild
commonName = Build time autogenerated @ALGO@ kernel key
emailAddress = ${email}
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOF
cat "%{certs_key_config_rnd}"
sed -e 's,@ALGO@,RSA,g' "%{certs_key_config_rnd}" > "%{certs_key_config_rnd}.RSA"
sed -e 's,@ALGO@,GOST R 34.10-2012,g' "%{certs_key_config_rnd}" > "%{certs_key_config_rnd}.GOST"
# avoid using the template
rm -f "%{certs_key_config_rnd}"
_libressl_gen_key(){
if [ "$GOST_KEY" = 1 ]
then
lssl_req_gost_args="\
-newkey gost2001 \
-pkeyopt dgst:streebog512 -pkeyopt paramset:A \
-streebog512"
OUT="%{certs_signing_key_priv_rnd}.GOST"
CONFIG="%{certs_key_config_rnd}.GOST"
else
lssl_req_gost_args=""
OUT="%{certs_signing_key_priv_rnd}.RSA"
CONFIG="%{certs_key_config_rnd}.RSA"
fi
libressl req -new -nodes -utf8 -batch \
$lssl_req_gost_args \
-days 109500 \
-x509 -config "$CONFIG" \
-out "$OUT" \
-keyout "$OUT"
# Verify
if [ "$GOST_KEY" = 1 ]; then
libressl x509 -in "%{certs_signing_key_priv_rnd}.GOST" -text -noout \
| grep -E 'Signature Algorithm:.*GOST R 34.10-2012'
libressl x509 -in "%{certs_signing_key_priv_rnd}.GOST" -text -noout \
| grep -E 'Digest Algorithm:.*GOST R 34-11-2012'
libressl x509 -in "%{certs_signing_key_priv_rnd}.GOST" -text -noout \
| grep -E 'Public Key Algorithm:.*GOST R 34.10-2012'
fi
}
GOST_KEY=0 _libressl_gen_key
GOST_KEY=1 _libressl_gen_key
# Fake CONFIG_MODULE_SIG_KEY to make build scripts happy
cp -v "%{certs_signing_key_priv_rnd}.RSA" "%{certs_signing_key_priv_rnd}"
# Strip public parts from the generated PEMs
sed -n \
'/^-----BEGIN CERTIFICATE-----$/,/^-----END CERTIFICATE-----$/p' \
"%{certs_signing_key_priv_rnd}.GOST" \
"%{certs_signing_key_priv_rnd}.RSA" \
> "%{certs_public_keys}"
# link sign-file and extract-cert with LibreSSL instead of OpenSSL
libressl_cflags="$(pkg-config --cflags --libs libressl-libcrypto)"
if [ $? != 0 ] ; then exit $? ; fi
sed -i %{src_dir}/scripts/Makefile \
%if %{with uml}
%{src_dir}.uml/scripts/Makefile \
%endif
-e "s,-lcrypto,${libressl_cflags},g"
%if %{with additional_keys}
# Add additional public RSA keys to the list of trusted keys for kernel modules
# Build kernel --without additional_keys if you do not want to trust them
cat %{expand:%(for i in `seq 1 12`; do echo "%%SOURCE$((200+${i}))" | tr "\n" " "; done)} \
>> "%{certs_public_keys}"
%endif #endif additional_keys
cat %{certs_public_keys}
%endif #endif enhanced_security
# .config
%smake -s mrproper
cp arch/x86/configs/%{arch_suffix}_defconfig-%{flavour} .config
# make sure EXTRAVERSION says what we want it to say
LC_ALL=C sed -ri "s/^EXTRAVERSION.*/EXTRAVERSION = -%{flavour}-%{buildrpmrel}/" Makefile
# Print debug messages when loglevel=7 in cmdline.
# Those messages can be caught by debugfs without -DDEBUG.
# but sometimes it is required to see them via a serial port when booting the kernel.
# '#ifdef DEBUG' is used in different places for different purposes,
# so change DEBUG to PRINTK_DEBUG in one specific place.
#%if %build_debug
#sed -i %{src_dir}/include/linux/printk.h \
# -e 's,^#ifdef DEBUG$,#if defined(DEBUG) || defined(PRINTK_DEBUG),g'
#export KCPPFLAGS="-DPRINTK_DEBUG"
#%endif
# build the kernel
echo "Building kernel %{kver_full}"
%kmake V=1 -s all
%if %{with uml}
cp -rv %{certs_dir_rnd} %{src_dir}.uml/
pushd %{src_dir}.uml
%kmake ARCH=um defconfig
cp .config .config.default
cat %{build_dir}/.config.append >> .config
%kmake oldconfig ARCH=um
diff -u .config.default .config || :
# Looks like 'make oldconfig' removes '# CONFIG_64BIT is not set' for some
# reason. For now, let us restore it.
%ifarch %{ix86}
sed -i 's/CONFIG_64BIT=y//' .config
echo '# CONFIG_64BIT is not set' >> .config
%endif
%kmake ARCH=um linux
install -Dm0755 linux %{temp_root}%{_bindir}/linux-uml-%{kver_full}
#rm -fv linux
%kmake V=1 ARCH=um modules
mkdir -p %{temp_root}/lib/modules-uml/%{kver_full}/
%kmake ARCH=um INSTALL_MOD_PATH=%{temp_root}/lib/modules-uml/%{kver_full}/ modules_install
popd
%endif
# Start installing stuff
install -d %{temp_boot}
install -m 644 System.map %{temp_boot}/System.map-%{kver_full}
install -m 644 .config %{temp_boot}/config-%{kver_full}
xz -c Module.symvers > %{temp_boot}/symvers-%{kver_full}.xz
cp -f arch/x86/boot/bzImage %{temp_boot}/vmlinuz-%{kver_full}
# modules
install -d %{temp_modules}/%{kver_full}
%smake INSTALL_MOD_PATH=%{temp_root} KERNELRELEASE=%{kver_full} modules_install
# headers
%if %{build_headers}
%make INSTALL_HDR_PATH=%{temp_root}%{_prefix} KERNELRELEASE=%{kver_full} headers_install
find %{temp_root}%{_prefix} -name .install -or -name ..install.cmd | %kxargs rm -f
%endif
# remove /lib/firmware, we use a separate linux-firmware package
rm -rf %{temp_root}/lib/firmware
# Prepare the files for kernel*-devel
%if %build_devel
mkdir -p %{temp_devel_root}
for i in $(find . -name 'Makefile*'); do cp -R --parents $i %{temp_devel_root}; done
for i in $(find . -name 'Kconfig*' -o -name 'Kbuild*'); do cp -R --parents $i %{temp_devel_root}; done
cp -fR include %{temp_devel_root}
cp -fR scripts %{temp_devel_root}
cp -fR kernel/bounds.c %{temp_devel_root}/kernel
cp -fR kernel/time/timeconst.bc %{temp_devel_root}/kernel/time
cp -fR tools %{temp_devel_root}/
cp -fR arch/x86/kernel/asm-offsets.{c,s} %{temp_devel_root}/arch/x86/kernel/
cp -fR arch/x86/kernel/asm-offsets_{32,64}.c %{temp_devel_root}/arch/x86/kernel/
cp -fR arch/x86/purgatory/* %{temp_devel_root}/arch/x86/purgatory/
cp -fR arch/x86/entry/syscalls/syscall* %{temp_devel_root}/arch/x86/entry/syscalls/
cp -fR arch/x86/include %{temp_devel_root}/arch/x86/
cp -fR arch/x86/tools %{temp_devel_root}/arch/x86/
cp -fR .config Module.symvers %{temp_devel_root}
# Needed for truecrypt build (Danny)
cp -fR drivers/md/dm.h %{temp_devel_root}/drivers/md/
# Needed for lirc_gpio (#39004)
cp -fR drivers/media/pci/bt8xx/bttv{,p}.h %{temp_devel_root}/drivers/media/pci/bt8xx/
cp -fR drivers/media/pci/bt8xx/bt848.h %{temp_devel_root}/drivers/media/pci/bt8xx/
cp -fR drivers/media/common/btcx-risc.h %{temp_devel_root}/drivers/media/common/
# add acpica header files, needed for fglrx build
cp -fR drivers/acpi/acpica/*.h %{temp_devel_root}/drivers/acpi/acpica/
# aufs2 has a special file needed
cp -fR fs/aufs/magic.mk %{temp_devel_root}/fs/aufs
# SELinux needs security/selinux/include
cp -fR security/selinux/include %{temp_devel_root}/security/selinux
# needed for kexec
cp -fR arch/x86/boot/*.h %{temp_devel_root}/arch/x86/boot/
cp -fR arch/x86/boot/*.c %{temp_devel_root}/arch/x86/boot/
# needed for arch/x86/purgatory
cp -fR lib/*.h lib/*.c %{temp_devel_root}/lib/
for i in alpha arc avr32 blackfin c6x cris csky frv h8300 hexagon ia64 m32r m68k m68knommu metag microblaze \
mips mn10300 nds32 nios2 openrisc parisc powerpc riscv s390 score sh sparc tile unicore32 xtensa; do
rm -rf %{temp_devel_root}/arch/$i
done
rm -rf %{temp_devel_root}/arch/arm*
rm -rf %{temp_devel_root}/include/kvm/arm*
rm -rf %{temp_devel_root}/include/soc
# Clean the scripts tree, and make sure everything is ok (sanity check)
# running prepare+scripts (tree was already "prepared" in build)
pushd %{temp_devel_root}
%smake V=1 -s prepare
%smake V=1 -s scripts
%smake V=1 -s clean
popd
rm -f %{temp_devel_root}/.config.old
# fix permissions
chmod -R a+rX %{temp_devel_root}
# disable mrproper in -devel rpms
patch -p1 --fuzz=0 -d %{temp_devel_root} -i %{SOURCE2}
# Create the symlinks needed by DKMS
mkdir -p %{temp_modules}/%{kver_full}
# endif build_devel
%endif
# Manage the files with debug info, provide the debug links in the
# kernel modules.
%if %build_debug
install -m 644 vmlinux %{temp_boot}/vmlinux-%{kver_full}
kernel_debug_files=../kernel_debug_files.%{flavour}
echo "%{_bootdir}/vmlinux-%{kver_full}" >> $kernel_debug_files
find %{temp_modules}/%{kver_full}/kernel \
-name "*.ko" | \
%kxargs -I '{}' objcopy --only-keep-debug '{}' '{}'.debug
find %{temp_modules}/%{kver_full}/kernel \
-name "*.ko" | %kxargs -I '{}' \
sh -c 'cd `dirname {}`; \
objcopy --add-gnu-debuglink=`basename {}`.debug \
--strip-debug `basename {}`'
pushd %{temp_modules}
find %{kver_full}/kernel -name "*.ko.debug" > debug_module_list
popd
cat %{temp_modules}/debug_module_list | \
sed 's|\(.*\)|%{_modulesdir}/\1|' >> $kernel_debug_files
cat %{temp_modules}/debug_module_list | \
sed 's|\(.*\)|%exclude %{_modulesdir}/\1|' \
>> ../kernel_exclude_debug_files.%{flavour}
rm -f %{temp_modules}/debug_module_list
# endif build_debug
%endif
%if %{enhanced_security}
# scripts/sign-file.c fails to sign modules:
# "CMS routines:func(4095):not supported for this key type"
# So make a dettached signature via libressl and attach it
# as a raw signature via sign-file.
# TODO: fix scripts/sign-file.c
_libressl_sign(){
if [ ! -f "$1" ]; then
echo "No file $1"
return 0
fi
f="$1"
%if %{with gost_sign}
%{src_dir}/scripts/sign-file streebog512 \
"%{certs_signing_key_priv_rnd}.GOST" "%{certs_signing_key_priv_rnd}.GOST" "$f"
%else
%{src_dir}/scripts/sign-file sha512 \
"%{certs_signing_key_priv_rnd}.RSA" "%{certs_signing_key_priv_rnd}.RSA" "$f"
%endif
unset f
}
export -f _libressl_sign
find %{temp_modules}/%{kver_full}/kernel \
%if %{with uml}
%{temp_root}/lib/modules-uml/%{kver_full} \
%endif
-name '*.ko' -print0 | sort -u | \
xargs --null -P "$(nproc)" -I {} "$SHELL" -e -x -c 'if ! _libressl_sign "{}"; \
then echo Failed _libressl_sign on "{}" && exit 1; fi'
%endif
# Create the list of files for the kernel.
kernel_files=../kernel_files.%{flavour}
cat > $kernel_files <<EOF
%{_bootdir}/System.map-%{kver_full}
%{_bootdir}/symvers-%{kver_full}.xz
%{_bootdir}/config-%{kver_full}
%{_bootdir}/vmlinuz-%{kver_full}
%{_modulesdir}/%{kver_full}/kernel
%{_modulesdir}/%{kver_full}/modules.*
EOF
%if %build_debug
cat ../kernel_exclude_debug_files.%{flavour} >> $kernel_files
%endif
# set extraversion to match srpm to get nice version reported by the tools
LC_ALL=C sed -ri "s/^EXTRAVERSION.*/EXTRAVERSION = -%{fullrpmrel}/" Makefile
%if %{build_perf}
%ifarch x86_64
%define perf_is_x64 1
%else
%define perf_is_x64 0
%endif
%smake -C tools/perf -s IS_X86_64=%{perf_is_x64} HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} NO_GTK2=1 all
%smake -C tools/perf -s prefix=%{_prefix} NO_GTK2=1 man
%endif
%if %{build_cpupower}
# make sure version-gen.sh is executable.
chmod +x tools/power/cpupower/utils/version-gen.sh
%make -C tools/power/cpupower CPUFREQ_BENCH=false
%endif
_cleanup
############################################################################
%install
cd %src_dir
# We want to be able to test several times the install part
rm -rf %{buildroot}
cp -a %{temp_root} %{buildroot}
%if %{enhanced_security}
# Multithreaded verification that every kernel module
# has a signature attached to it
mkdir -p "%{certs_dir_rnd}"
touch %{certs_verify_tmp}
_verify_signature(){
if [ -z "$1" ] || [ ! -f "$1" ]; then return; fi
if hexdump -C "$1" | rev | cut -f 2 -d '|' | rev | tr -d '\n' | \
grep -q '~Module signature appended~'
then
if [ -f %{certs_verify_tmp} ]; then
rm -f %{certs_verify_tmp}
fi
else
echo "ERROR: Module $1 has no signature attached to it!"
exit 1
fi
}
export -f _verify_signature
find %{target_modules} \
%if %{with uml}
%{buildroot}/lib/modules-uml/%{kver_full} \
%endif
-name '*.ko' -print0 | sort -u | \
xargs --null -P "$(nproc)" -I {} "$SHELL" -c '_verify_signature "{}"'
if [ -f %{certs_verify_tmp} ]; then
echo "ERROR: seems that signatures of none modules were verified!"
exit 1
fi
rm -f %{certs_verify_tmp}
%endif
# compressing modules
%if %{build_modxz}
find %{target_modules} -name "*.ko" | %kxargs xz -6e
%else
find %{target_modules} -name "*.ko" | %kxargs gzip -9
%endif
pushd %{target_modules}
for i in *; do
rm -f $i/build $i/source
ln -sf /usr/src/linux-$i $i/build
ln -sf /usr/src/linux-$i $i/source
done
# sniff, if we compressed all the modules, we change the stamp :(
# we really need the depmod -ae here
for i in *; do
/sbin/depmod -ae -b %{buildroot} -F %{target_boot}/System.map-$i $i
echo $?
done
# We used to create modules.description files which contained the
# description strings for the modules as shown by modinfo. These files
# are unlikely to be used right now, so create them (in case some old tool
# checks for their existence) but keep them empty.
for i in *; do
touch $i/modules.description
done
popd
# need to set extraversion to match srpm again to avoid rebuild
LC_ALL=C sed -ri "s/^EXTRAVERSION.*/EXTRAVERSION = -%{fullrpmrel}/" Makefile
%if %{build_perf}
# perf tool binary and supporting scripts/binaries
make -C tools/perf -s V=1 DESTDIR=%{buildroot} IS_X86_64=%{perf_is_x64} HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} install
# perf man pages (note: implicit rpm magic compresses them later)
make -C tools/perf -s V=1 DESTDIR=%{buildroot} IS_X86_64=%{perf_is_x64} HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} install-man
%endif
%if %{build_cpupower}
make -C tools/power/cpupower DESTDIR=%{buildroot} libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install
rm -f %{buildroot}%{_libdir}/*.{a,la}
%find_lang cpupower
mv cpupower.lang ../
chmod 0755 %{buildroot}%{_libdir}/libcpupower.so*
mkdir -p %{buildroot}%{_unitdir} %{buildroot}%{_sysconfdir}/sysconfig
install -m644 %{SOURCE50} %{buildroot}%{_unitdir}/cpupower.service
install -m644 %{SOURCE53} %{buildroot}%{_unitdir}/cpupower.path
install -m644 %{SOURCE51} %{buildroot}%{_sysconfdir}/sysconfig/cpupower
install -m755 %{SOURCE52} %{buildroot}%{_bindir}/cpupower-start.sh
%endif