kernel-5.15/kernel.spec
Mikhail Novosyolov c8c0d23daa upd: 5.4.72 -> 5.4.77, changelog:
$ for i in `seq 73 77`; do wget https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.4.$i ; done
$ cat * | grep ^Date: -A2 | grep -v ^Date: | sort -u | sed -e 's,^    ,,g'

9P: Cast to loff_t before multiplying
ACPI: Add out of bounds and numa_off protections to pxm_to_node()
ACPI: button: fix handling lid state changes when input device closed
acpi-cpufreq: Honor _PSD table setting on new AMD CPUs
ACPI: debug: don't allow debugging when ACPI is disabled
ACPI: EC: PM: Drop ec_no_wakeup check from acpi_ec_dispatch_gpe()
ACPI: EC: PM: Flush EC work unconditionally after wakeup
ACPI / extlog: Check for RDMSR failure
ACPI: HMAT: Fix handling of changes from ACPI 6.2 to ACPI 6.3
ACPI: NFIT: Fix comparison to '-ENXIO'
ACPI: video: use ACPI backlight for HP 635 Notebook
ALSA: bebob: potential info leak in hwdep_read()
ALSA: hda/ca0132 - Add AE-7 microphone selection commands.
ALSA: hda/ca0132 - Add new quirk ID for SoundBlaster AE-7.
ALSA: hda: fix jack detection with Realtek codecs when in D3
ALSA: hda/hdmi: fix incorrect locking in hdmi_pcm_close
ALSA: hda/realtek - Add mute Led support for HP Elitebook 845 G7
ALSA: hda/realtek: Enable audio jacks of ASUS D700SA with ALC887
ALSA: hda/realtek - Enable headphone for ASUS TM420
ALSA: hda/realtek - Fixed HP headset Mic can't be detected
ALSA: hda/realtek - set mic to auto detect on a HP AIO machine
ALSA: hda/realtek - The front Mic on a HP machine doesn't work
ALSA: seq: oss: Avoid mutex lock for a long-time ioctl
ALSA: usb-audio: Add implicit feedback quirk for MODX
ALSA: usb-audio: Add implicit feedback quirk for Qu-16
ALSA: usb-audio: Add implicit feedback quirk for Zoom UAC-2
ALSA: usb-audio: add usb vendor id as DSD-capable for Khadas devices
ARC: [dts] fix the errors detected by dtbs_check
arch/x86/amd/ibs: Fix re-arming IBS Fetch
ARC: perf: redo the pct irq missing in device-tree handling
arc: plat-hsdk: fix kconfig dependency warning when !RESET_CONTROLLER
ARC: stack unwinding: avoid indefinite looping
arm64: asm: Add new-style position independent function annotations
arm64: berlin: Select DW_APB_TIMER_OF
arm64: Change .weak to SYM_FUNC_START_WEAK_PI for arch/arm64/lib/mem*.S
arm64: dts: actions: limit address range for pinctrl node
arm64: dts: allwinner: h5: remove Mali GPU PMU module
arm64: dts: imx8mq: Add missing interrupts to GPC
arm64: dts: marvell: espressobin: Add ethernet switch aliases
arm64: dts: meson: add missing g12 rng clock
arm64: dts: meson: vim3: correct led polarity
arm64: dts: qcom: msm8916: Fix MDP/DSI interrupts
arm64: dts: qcom: msm8916: Remove one more thermal trip point unit name
arm64: dts: qcom: pm8916: Remove invalid reg size from wcd_codec
arm64: dts: renesas: r8a774c0: Fix MSIOF1 DMA channels
arm64: dts: renesas: r8a77990: Fix MSIOF1 DMA channels
arm64: dts: renesas: ulcb: add full-pwr-cycle-in-suspend into eMMC nodes
arm64: dts: zynqmp: Remove additional compatible string for i2c IPs
arm64: lib: Use modern annotations for assembly functions
arm64: link with -z norelro regardless of CONFIG_RELOCATABLE
arm64/mm: return cpu_all_mask when node is NUMA_NO_NODE
arm64: Run ARCH_WORKAROUND_1 enabling code on all CPUs
arm64: Run ARCH_WORKAROUND_2 enabling code on all CPUs
arm64/smp: Move rcu_cpu_starting() earlier
arm64: topology: Stop using MPIDR for topology information
ARM: 8997/2: hw_breakpoint: Handle inexact watchpoint addresses
ARM: 9007/1: l2c: fix prefetch bits init in L2X0_AUX_CTRL using DT values
ARM: at91: pm: of_node_put() after its usage
ARM: dts: imx6sl: fix rng node
ARM: dts: meson8: remove two invalid interrupt lines from the GPU node
arm: dts: mt7623: add missing pause for switchport
ARM: dts: omap4: Fix sgx clock rate for 4430
ARM: dts: owl-s500: Fix incorrect PPI interrupt specifiers
ARM: dts: s5pv210: move fixed clocks under root node
ARM: dts: s5pv210: move PMU node out of clock controller
ARM: dts: s5pv210: remove dedicated 'audio-subsystem' node
ARM: dts: s5pv210: remove DMA controller bus node name to fix dtschema warnings
ARM: dts: sun4i-a10: fix cpu_alert temperature
ARM: dts: sun8i: r40: bananapi-m2-ultra: Fix dcdc1 regulator
ARM: OMAP2+: Restore MPU power domain if cpu_cluster_pm_enter() fails
ARM: s3c24xx: fix missing system reset
ARM: s3c24xx: fix mmc gpio lookup tables
ARM: samsung: fix PM debug build with DEBUG_LL but !MMU
ASoC: fsl: imx-es8328: add missing put_device() call in imx_es8328_probe()
ASoC: fsl_sai: Instantiate snd_soc_dai_driver
ASoC: Intel: Skylake: Add alternative topology binary name
ASoC: qcom: lpass-cpu: fix concurrency issue
ASoC: qcom: lpass-platform: fix memory leak
ASoC: tlv320aic32x4: Fix bdiv clock rate derivation
ata: ahci: mvebu: Make SATA PHY optional for Armada 3720
ata: sata_nv: Fix retrieving of active qcs
ata: sata_rcar: Fix DMA boundary mask
ath10k: check idx validity in __ath10k_htt_rx_ring_fill_n()
ath10k: Fix the size used in a 'dma_free_coherent()' call in an error handling path
ath10k: fix VHT NSS calculation when STBC is enabled
ath10k: provide survey info as accumulated data
ath10k: start recovery process when payload length exceeds max htc length for sdio
ath6kl: prevent potential array overflow in ath6kl_add_new_sta()
ath6kl: wmi: prevent a shift wrapping bug in ath6kl_wmi_delete_pstream_cmd()
ath9k: Fix potential out of bounds in ath9k_htc_txcompletion_cb()
ath9k: hif_usb: fix race condition between usb_get_urb() and usb_kill_anchored_urbs()
backlight: sky81452-backlight: Fix refcount imbalance on error
binder: fix UAF when releasing todo list
binder: Remove bogus warning on failed same-process transaction
blk-cgroup: Fix memleak on error path
blk-cgroup: Pre-allocate tree node on blkg_conf_prep
blk-mq: move cancel of hctx->run_work to the front of blk_exit_queue
block: ratelimit handle_bad_sector() message
Bluetooth: btusb: Fix memleak in btusb_mtk_submit_wmt_recv_urb
Bluetooth: hci_uart: Cancel init work before unregistering
Bluetooth: Only mark socket zapped after unlocking
bnxt_en: Check abort error state in bnxt_open_nic().
bnxt_en: Fix regression in workqueue cleanup logic in bnxt_remove_one().
bnxt_en: Invoke cancel_delayed_work_sync() for PFs also.
bnxt_en: Log unknown link speed appropriately.
bnxt_en: Re-write PCI BARs after PCI fatal error.
bnxt_en: Send HWRM_FUNC_RESET fw command unconditionally.
bpf: Fix comment for helper bpf_current_task_under_cgroup()
bpf: Limit caller's stack depth 256 for subprogs with tailcalls
bpf: Permit map_ptr arithmetic with opcode add and offset 0
brcm80211: fix possible memleak in brcmf_proto_msgbuf_attach
brcmfmac: check ndev pointer
brcmfmac: Fix warning message after dongle setup failed
brcmsmac: fix memory leak in wlc_phy_attach_lcnphy
btrfs: cleanup cow block on error
btrfs: fix readahead hang and use-after-free after removing a device
btrfs: fix replace of seed device
btrfs: fix use-after-free on readahead extent after failure to create it
btrfs: improve device scanning messages
btrfs: qgroup: fix wrong qgroup metadata reserve for delayed inode
btrfs: reschedule if necessary when logging directory items
btrfs: send, orphanize first all conflicting inodes when processing references
btrfs: send, recompute reference path after orphanization of a directory
btrfs: tree-checker: fix false alert caused by legacy btrfs root item
btrfs: tree-checker: validate number of chunk stripes and parity
btrfs: use kvzalloc() to allocate clone_roots in btrfs_ioctl_send()
bus/fsl_mc: Do not rely on caller to provide non NULL mc_io
cachefiles: Handle readpage error correctly
cadence: force nonlinear buffers to be cloned
can: flexcan: disable clocks during stop mode
can: flexcan: flexcan_chip_stop(): add error handling and propagate error value
can: j1935: j1939_tp_tx_dat_new(): fix missing initialization of skbcnt
can: m_can_platform: don't call m_can_class_suspend in runtime suspend
ceph: promote to unsigned long long before shifting
chelsio/chtls: correct function return and return type
chelsio/chtls: correct netdevice for vlan interface
chelsio/chtls: fix always leaking ctrl_skb
chelsio/chtls: fix deadlock issue
chelsio/chtls: fix memory leaks caused by a race
chelsio/chtls: fix memory leaks in CPL handlers
chelsio/chtls: fix socket lock
chelsio/chtls: fix tls record info to user
cifs: handle -EINTR in cifs_setattr
cifs: remove bogus debug code
cifs: Return the error from crypt_message when enc/dec key not found.
clk: at91: clk-main: update key before writing AT91_CKGR_MOR
clk: bcm2835: add missing release if devm_clk_hw_register fails
clk: imx8mq: Fix usdhc parents order
clk: keystone: sci-clk: fix parsing assigned-clock data during probe
clk: mediatek: add UART0 clock support
clk: meson: g12a: mark fclk_div2 as critical
clk: qcom: gcc-sdm660: Fix wrong parent_map
clk: rockchip: Initialize hw to error to avoid undefined behavior
clk: ti: clockdomain: fix static checker warning
coresight: etm4x: Handle unreachable sink in perf mode
coresight: etm: perf: Fix warning caused by etm_setup_aux failure
coresight: Make sysfs functional on topologies with per core sink
cpufreq: armada-37xx: Add missing MODULE_DEVICE_TABLE
cpufreq: powernv: Fix frame-size-overflow in powernv_cpufreq_reboot_notifier
cpufreq: sti-cpufreq: add stih418 support
crypto: algif_aead - Do not set MAY_BACKLOG on the async path
crypto: algif_skcipher - EBUSY on aio should be an error
crypto: caam/qi - add fallback for XTS with more than 8B IV
crypto: ccp - fix error handling
crypto: ixp4xx - Fix the size used in a 'dma_free_coherent()' call
crypto: mediatek - Fix wrong return value in mtk_desc_ring_alloc()
crypto: omap-sham - fix digcnt register handling with export/import
crypto: picoxcell - Fix potential race condition bug
crypto: x86/crc32c - fix building with clang ias
cxgb4: handle 4-tuple PEDIT to NAT mode translation
cxgb4: set up filter action after rewrites
cxl: Rework error message for incompatible slots
cypto: mediatek - fix leaks in mtk_desc_ring_alloc
device property: Don't clear secondary pointer for shared primary firmware node
device property: Keep secondary firmware node secondary by type
dmaengine: dma-jz4780: Fix race in jz4780_dma_tx_status
dmaengine: dmatest: Check list for emptiness before access its last entry
dmaengine: dw: Activate FIFO-mode for memory peripherals only
dmaengine: dw: Add DMA-channels mask cell support
drivers/net/wan/hdlc_fr: Correctly handle special skb->protocol values
drivers/perf: thunderx2_pmu: Fix memory resource error handling
drivers/perf: xgene_pmu: Fix uninitialized resource struct
drivers/virt/fsl_hypervisor: Fix error handling path
drivers: watchdog: rdc321x_wdt: Fix race condition bugs
drm/amd/display: Avoid MST manager resource leak.
drm/amd/display: Don't invoke kgdb_breakpoint() unconditionally
drm/amd/display: Fix kernel panic by dal_gpio_open() error
drm/amd/display: Fix wrong return value in dm_update_plane_state()
drm/amd/display: HDMI remote sink need mode validation for Linux
drm/amd/display: Increase timeout for DP Disable
drm/amdgpu: add DID for navi10 blockchain SKU
drm/amdgpu: correct the gpu reset handling for job != NULL case
drm/amdgpu: don't map BO in reserved region
drm/amdgpu: increase the reserved VM size to 2MB
drm/amdkfd: Use same SQ prefetch setting as amdgpu
drm/amd/pm: increase mclk switch threshold to 200 us
drm/bridge/synopsys: dsi: add support for non-continuous HS clock
drm/brige/megachips: Add checking if ge_b850v3_lvds_init() is working correctly
drm/crc-debugfs: Fix memleak in crc_control_write
drm/gma500: fix error check
drm/i915: Break up error capture compression loops with cond_resched()
drm/i915: Drop runtime-pm assert from vgpu io accessors
drm/i915: Force VT'd workarounds when running as a guest OS
drm/i915/gt: Delay execlist processing for tgl
drm/msm/a6xx: fix a potential overflow issue
drm/msm: Avoid div-by-zero in dpu_crtc_atomic_check()
drm: mxsfb: check framebuffer pitch
drm/nouveau/gem: fix "refcount_t: underflow; use-after-free"
drm/nouveau/nouveau: fix the start/end range for migration
drm: panel: Fix bpc for OrtusTech COM43H4M85ULC panel
drm: panel: Fix bus format for OrtusTech COM43H4M85ULC panel
drm/panfrost: add amlogic reset quirk callback
drm/panfrost: Ensure GPU quirks are always initialised
drm/panfrost: Fix a deadlock between the shrinker and madvise path
drm/sun4i: frontend: Fix the scaler phase on A33
drm/sun4i: frontend: Reuse the ch0 phase for RGB formats
drm/sun4i: frontend: Rework a bit the phase data
drm/ttm: fix eviction valuable range check.
drm/vc4: drv: Add error handding for bind
drm/vkms: fix xrgb on compute crc
EDAC/aspeed: Fix handling of platform_get_irq() error
EDAC/i5100: Fix error handling order in i5100_init_one()
EDAC/ti: Fix handling of platform_get_irq() error
eeprom: at25: set minimum read/write access stride to 1
efivarfs: Replace invalid slashes with exclamation marks in dentries.
erofs: avoid duplicated permission check for "trusted." xattrs
evm: Check size of security.evm before using it
ext4: Detect already used quota file early
ext4: fix error handling code in add_new_gdb
ext4: fix invalid inode checksum
ext4: fix leaking sysfs kobject after failed mount
ext4: limit entries returned when counting fsmap records
extcon: ptn5150: Fix usage of atomic GPIO with sleeping GPIO chips
f2fs: add trace exit in exception path
f2fs: fix to check segment boundary during SIT page readahead
f2fs: fix uninit-value in f2fs_lookup
f2fs: handle errors of f2fs_get_meta_page_nofail
f2fs: wait for sysfs kobject removal before freeing f2fs_sb_info
fbmem: add margin check to fb_check_caps()
firmware: arm_scmi: Add missing Rx size re-initialisation
firmware: arm_scmi: Fix ARCH_COLD_RESET
Fix use after free in get_capset_info callback.
Fonts: Replace discarded const qualifier
fork: fix copy_process(CLONE_PARENT) race with the exiting ->real_parent
fs: dlm: fix configfs memory leak
fs: Don't invalidate page buffers in block_write_full_page()
fs: fix NULL dereference due to data race in prepend_path()
ftrace: Fix recursion check for NMI test
ftrace: Handle tracing when switching between context
fuse: fix page dereference after free
futex: Fix incorrect should_fail_futex() handling
futex: Handle transient "ownerless" rtmutex state correctly
gfs2: add validation checks for size of superblock
gfs2: use-after-free in sysfs deregistration
gfs2: Wake up when sd_glock_disposal becomes zero
gianfar: Account for Tx PTP timestamp in the skb headroom
gianfar: Replace skb_realloc_headroom with skb_cow_head for PTP
gtp: fix an use-before-init in gtp_newlink()
HID: hid-input: fix stylus battery reporting
HID: ite: Add USB id match for Acer One S1003 keyboard dock
HID: roccat: add bounds checking in kone_sysfs_write_settings()
HID: wacom: Avoid entering wacom_wac_pen_report for pad / battery
hil/parisc: Disable HIL driver when it gets stuck
hwmon: (pmbus/max34440) Fix status register reads for MAX344{51,60,61}
i2c: core: Restore acpi_walk_dep_device_list() getting called after registering the ACPI i2c devs
i2c: imx: Fix external abort on interrupt in exit paths
i2c: rcar: Auto select RESET_CONTROLLER
i3c: master add i3c_master_attach_boardinfo to preserve boardinfo
i3c: master: Fix error return in cdns_i3c_master_probe()
i40iw: Add support to make destroy QP synchronous
ia64: fix build error with !COREDUMP
ia64: kprobes: Use generic kretprobe trampoline handler
IB/mlx4: Adjust delayed work when a dup is observed
IB/mlx4: Fix starvation in paravirt mux/demux
ibmveth: Identify ingress large send packets.
ibmveth: Switch order of ibmveth_helper calls.
ibmvnic: fix ibmvnic_set_mac
ibmvnic: save changed mac address to adapter->mac_addr
ibmvnic: set up 200GBPS speed
IB/rdmavt: Fix sizeof mismatch
icmp: randomize the global rate limiter
ida: Free allocated bitmap in error path
iio: adc: gyroadc: fix leak of device node iterator
iio: adc: stm32-adc: fix runtime autosuspend delay when slow polling
iio:adc:ti-adc0832 Fix alignment issue with timestamp
iio:adc:ti-adc12138 Fix alignment issue with timestamp
iio:gyro:itg3200: Fix timestamp alignment and prevent data leak.
iio:light:si1145: Fix timestamp alignment and prevent data leak.
ima: Don't ignore errors from crypto_shash_update()
Input: ep93xx_keypad - fix handling of platform_get_irq() error
Input: imx6ul_tsc - clean up some errors in imx6ul_tsc_resume()
Input: omap4-keypad - fix handling of platform_get_irq() error
Input: stmfts - fix a & vs && typo
Input: sun4i-ps2 - fix handling of platform_get_irq() error
Input: twl4030_keypad - fix handling of platform_get_irq() error
iomap: Clear page error before beginning a write
iomap: fix WARN_ON_ONCE() from unprivileged users
ionic: check port ptr before use
ip_gre: set dev->hard_header_len and dev->needed_headroom properly
ipmi_si: Fix wrong return value in try_smi_init()
ip_tunnel: fix over-mtu packet send fail without TUNNEL_DONT_FRAGMENT flags
ipv4: Restore flowi4_oif update before call to xfrm_lookup_route
ipvs: clear skb->tstamp in forwarding path
ipvs: Fix uninit-value in do_ip_vs_set_ctl()
iwlwifi: mvm: split a print to avoid a WARNING in ROC
kdb: Fix pager search for multi-line strings
kgdb: Make "kgdbcon" work properly with "kgdb_earlycon"
kthread_worker: prevent queuing delayed work from timer_fn when it is being canceled
KVM: arm64: Fix AArch32 handling of DBGD{CCINT,SCRext} and DBGVCR
KVM: nVMX: Reload vmcs01 if getting vmcs12's pages fails
KVM: nVMX: Reset the segment cache when stuffing guest segs
KVM: PPC: Book3S HV: Do not allocate HPT for a nested guest
KVM: SVM: Initialize prev_ga_tag before use
KVM: x86: emulating RDPID failure shall return #UD rather than #GP
KVM: x86/mmu: Commit zap of remaining invalid pages when recovering lpages
leds: bcm6328, bcm6358: use devres LED registering function
libceph: clear con->out_msg on Policy::stateful_server faults
lib/crc32.c: fix trivial typo in preprocessor condition
lib/crc32test: remove extra local_irq_disable/enable
lightnvm: fix out-of-bounds write to array devices->info[]
linkage: Introduce new macros for assembler symbols
Linux 5.4.73
Linux 5.4.74
Linux 5.4.75
Linux 5.4.76
Linux 5.4.77
mac80211: handle lack of sband->bitrates in rates
maiblox: mediatek: Fix handling of platform_get_irq() error
mailbox: avoid timer start from callback
md/bitmap: fix memory leak of temporary bitmap
md/bitmap: md_bitmap_get_counter returns wrong blocks
md/raid5: fix oops during stripe resizing
media: ati_remote: sanity check for both endpoints
media: bdisp: Fix runtime PM imbalance on error
media: camss: Fix a reference count leak.
media: exynos4-is: Fix a reference count leak
media: exynos4-is: Fix a reference count leak due to pm_runtime_get_sync
media: exynos4-is: Fix several reference count leaks due to pm_runtime_get_sync
media: firewire: fix memory leak
media: i2c: ov5640: Enable data pins on poweron for DVP mode
media: i2c: ov5640: Remain in power down for DVP mode unless streaming
media: i2c: ov5640: Separate out mipi configuration from s_power
media: imx274: fix frame interval handling
media: m5mols: Check function pointer in m5mols_sensor_power
media: media/pci: prevent memory leak in bttv_probe
media: mx2_emmaprp: Fix memleak in emmaprp_probe
media: omap3isp: Fix memleak in isp_probe
media: ov5640: Correct Bit Div register in clock tree diagram
media: platform: fcp: Fix a reference count leak.
media: platform: Improve queue set up flow for bug fixing
media: platform: s3c-camif: Fix runtime PM imbalance on error
media: platform: sti: hva: Fix runtime PM imbalance on error
media: rcar-csi2: Allocate v4l2_async_subdev dynamically
media: rcar_drif: Allocate v4l2_async_subdev dynamically
media: rcar_drif: Fix fwnode reference leak when parsing DT
media: rcar-vin: Fix a reference count leak.
media: Revert "media: exynos4-is: Add missed check for pinctrl_lookup_state()"
media: rockchip/rga: Fix a reference count leak.
media: s5p-mfc: Fix a reference count leak
media: saa7134: avoid a shift overflow
media: staging/intel-ipu3: css: Correctly reset some memory
media: st-delta: Fix reference count leak in delta_run_work
media: sti: Fix reference count leaks
media: stm32-dcmi: Fix a reference count leak
media: tc358743: cleanup tc358743_cec_isr
media: tc358743: initialize variable
media: ti-vpe: Fix a missing check and reference count leak
media: tuner-simple: fix regression in simple_set_radio_freq
media: tw5864: check status of tw5864_frameinterval_get
media: uvcvideo: Ensure all probed info is returned to v4l2
media: uvcvideo: Fix dereference of out-of-bound list iterator
media: uvcvideo: Fix uvc_ctrl_fixup_xu_info() not having any effect
media: uvcvideo: Set media controller entity functions
media: uvcvideo: Silence shift-out-of-bounds warning
media: venus: core: Fix runtime PM imbalance in venus_probe
media: venus: fixes for list corruption
media: videodev2.h: RGB BT2020 and HSV are always full range
media: vsp1: Fix runtime PM imbalance on error
memory: emif: Remove bogus debugfs error handling
memory: fsl-corenet-cf: Fix handling of platform_get_irq() error
memory: omap-gpmc: Fix a couple off by ones
memory: omap-gpmc: Fix build error without CONFIG_OF
mfd: sm501: Fix leaks in probe()
mic: vop: copy data to kernel space then write to io memory
MIPS: DEC: Restore bootmem reservation for firmware working memory area
misc: mic: scif: Fix error handling path
misc: rtsx: do not setting OC_POWER_DOWN reg in rtsx_pci_init_ocp()
misc: rtsx: Fix memory leak in rtsx_pci_probe
misc: vop: add round_up(x,4) for vring_size to avoid kernel panic
mlx4: handle non-napi callers to napi_poll
mlxsw: core: Fix memory leak on module removal
mlxsw: core: Fix use-after-free in mlxsw_emad_trans_finish()
mm: always have io_remap_pfn_range() set pgprot_decrypted()
mmc: sdhci-acpi: AMDI0040: Set SDHCI_QUIRK2_PRESET_VALUE_BROKEN
mmc: sdhci: Add LTR support for some Intel BYT based controllers
mmc: sdhci-of-esdhc: set timeout to max before tuning
mmc: sdhci: Use Auto CMD Auto Select only when v4_mode is true
mmc: sdio: Check for CISTPL_VERS_1 buffer size
mmc: via-sdmmc: Fix data race bug
mm/error_inject: Fix allow_error_inject function signatures.
mm: fix exec activate_mm vs TLB shootdown and lazy tlb switching race
mm/memcg: fix device private memcg accounting
mm: mempolicy: fix potential pte_unmap_unlock pte error
mm, oom_adj: don't loop through tasks in __set_oom_adj when not necessary
mm/page_owner: change split_page_owner to take a count
mm/swapfile.c: fix potential memory leak in sys_swapon
module: statically initialize init section freeing data
mtd: lpddr: Fix bad logic in print_drs_error
mtd: lpddr: fix excessive stack usage with clang
mtd: mtdoops: Don't write panic data twice
mtd: rawnand: vf610: disable clk on error handling path in probe
mtd: spinand: gigadevice: Add QE Bit
mtd: spinand: gigadevice: Only one dummy byte in QUADIO
mtd: spi-nor: Don't copy self-pointing struct around
mwifiex: Do not use GFP_KERNEL in atomic context
mwifiex: don't call del_timer_sync() on uninitialized timer
mwifiex: fix double free
nbd: make the config put is called before the notifying the waiter
net: 9p: initialize sun_server.sun_path to have addr's value only when addr is valid
net: dsa: rtl8366: Check validity of passed VLANs
net: dsa: rtl8366rb: Support all 4096 VLANs
net: dsa: rtl8366: Refactor VLAN/PVID init
net: dsa: rtl8366: Skip PVID setting if not requested
netem: fix zero division in tabledist
net: enic: Cure the enic api locking trainwreck
net: fec: Fix phy_device lookup for phy_reset_after_clk_enable()
net: fec: Fix PHY init after phy_reset_after_clk_enable()
netfilter: conntrack: connection timeout after re-register
netfilter: ebtables: Fixes dropping of small packets in bridge nat
netfilter: nf_fwd_netdev: clear timestamp in forwarding path
netfilter: nf_log: missing vlan offload tag and proto
netfilter: nftables_offload: KASAN slab-out-of-bounds Read in nft_flow_rule_create
net: fix pos incrementment in ipv6_route_seq_next
net: ftgmac100: Fix Aspeed ast2600 TX hang issue
net: hdlc: In hdlc_rcv, check to make sure dev is an HDLC device
net: hdlc_raw_eth: Clear the IFF_TX_SKB_SHARING flag after calling ether_setup
net: hns3: Clear the CMDQ registers before unmapping BAR region
net/ipv4: always honour route mtu during forwarding
net: j1939: j1939_session_fresh_new(): fix missing initialization of skbcnt
net: korina: cast KSEG0 address to pointer in kfree
net: korina: fix kfree of rx/tx descriptor array
net/mlx5: Don't call timecounter cyc2time directly from 1PPS flow
net: Properly typecast int values to set sk_max_pacing_rate
net/sched: act_mpls: Add softdep on mpls_gso.ko
net/sched: act_tunnel_key: fix OOB write in case of IPv6 ERSPAN tunnels
net_sched: remove a redundant goto chain check
net/smc: fix valid DMBE buffer sizes
net: stmmac: use netif_tx_start|stop_all_queues() function
net/tls: sendfile fails with ktls offload
net: usb: qmi_wwan: add Cellient MPL200 card
net: usb: qmi_wwan: add Telit LE910Cx 0x1230 composition
net: wilc1000: clean up resource in error path of init mon interface
nexthop: Fix performance regression in nexthop deletion
nfc: Ensure presence of NFC_ATTR_FIRMWARE_NAME attribute in nfc_genl_fw_download()
NFS4: Fix oops when copy_file_range is attempted with NFS4.0 source
NFSD: Add missing NFSv2 .pc_func methods
NFS: fix nfs_path in case of a rename retry
NFSv4.2: support EXCHGID4_FLAG_SUPP_FENCE_OPS 4.2 EXCHANGE_ID flag
NFSv4: Wait for stateid updates after CLOSE/OPEN_DOWNGRADE
nl80211: fix non-split wiphy information
nl80211: fix OBSS PD min and max offset validation
NTB: hw: amd: fix an issue about leak system resources
ntfs: add check for mft record size in superblock
nvmem: core: fix possibly memleak when use nvmem_cell_info_to_nvmem_cell()
nvme-pci: disable the write zeros command for Intel 600P/P3100
nvme-rdma: fix crash when connect rejected
nvme-rdma: handle unexpected nvme completion data length
nvmet: fix a NULL pointer dereference when tracing the flush command
nvmet: fix uninitialized work for zero kato
objtool: Support Clang non-section symbols in ORC generation
of: Fix reserved-memory overlap detection
openrisc: Fix issue with get_user for 64-bit values
opp: Prevent memory leak in dev_pm_opp_attach_genpd()
overflow: Include header file with SIZE_MAX declaration
p54: avoid accessing the data mapped to streaming DMA
PCI: aardvark: Check for errors from pci_bridge_emul_init() call
PCI/ACPI: Whitelist hotplug ports for D3 if power managed by ACPI
PCI/IOV: Mark VFs as not implementing PCI_COMMAND_MEMORY
PCI: iproc: Set affinity mask on MSI interrupts
perf/core: Fix a memory leak in perf_event_parse_addr_filter()
perf: correct SNOOPX field offset
perf intel-pt: Fix "context_switch event has no tid" error
perf python scripting: Fix printable strings in python3 scripts
perf stat: Skip duration_time in setup_system_wide
perf/x86/amd/ibs: Don't include randomized bits in get_ibs_op_count()
perf/x86/amd/ibs: Fix raw sample data accumulation
perf/x86/intel/ds: Fix x86_pmu_stop warning for large PEBS
perf/x86/intel: Fix Ice Lake event constraint table
perf/x86/intel/uncore: Reduce the number of CBOX counters
perf/x86/intel/uncore: Update Ice Lake uncore units
phy: marvell: comphy: Convert internal SMCC firmware return codes to errno
pinctrl: bcm: fix kconfig dependency warning when !GPIOLIB
pinctrl: mcp23s08: Fix mcp23x17 precious range
pinctrl: mcp23s08: Fix mcp23x17_regmap initialiser
platform/x86: mlx-platform: Remove PSU EEPROM configuration
PM: hibernate: remove the bogus call to get_gendisk() in software_resume()
PM: runtime: Drop pm_runtime_clean_up_links()
PM: runtime: Drop runtime PM references to supplier on link removal
PM: runtime: Fix timer_expires data type on 32-bit arches
PM: runtime: Remove link state checks in rpm_get/put_supplier()
PM: runtime: Resume the device earlier in __device_release_driver()
powercap: restrict energy meter to root access
powerpc/64s/radix: Fix mm_cpumask trimming race vs kthread_use_mm
powerpc/book3s64/hash/4k: Support large linear mapping range with 4K
powerpc/drmem: Make lmb_size 64 bit
powerpc: Fix undetected data corruption with P9N DD2.1 VSX CI load emulation
powerpc/icp-hv: Fix missing of_node_put() in success path
powerpc/memhotplug: Make lmb size 64bit
powerpc/perf: Exclude pmc5/6 from the irrelevant PMU group constraints
powerpc/perf/hv-gpci: Fix starting index value
powerpc/powermac: Fix low_sleep_handler with KUAP and KUEP
powerpc/powernv/dump: Fix race while processing OPAL dump
powerpc/powernv/elog: Fix race while processing OPAL error log event.
powerpc/powernv/smp: Fix spurious DBG() warning
powerpc/pseries: Avoid using addr_to_pfn in real mode
powerpc/pseries: explicitly reschedule during drmem_lmb list traversal
powerpc/pseries: Fix missing of_node_put() in rng_init()
powerpc/rtas: Restrict RTAS requests from userspace
powerpc: select ARCH_WANT_IRQS_OFF_ACTIVATE_MM
powerpc/tau: Check processor type before enabling TAU interrupt
powerpc/tau: Convert from timer to workqueue
powerpc/tau: Disable TAU between measurements
powerpc/tau: Remove duplicated set_thresholds() call
powerpc/tau: Use appropriate temperature sample interval
powerpc/vnic: Extend "failover pending" window
powerpc: Warn about use of smt_snooze_delay
power: supply: bq27xxx: report "not charging" on all types
power: supply: test_power: add missing newlines when printing parameters by sysfs
printk: reduce LOG_BUF_SHIFT range for H8300
pseries/drmem: don't cache node id in drmem_lmb struct
ptrace: fix task_join_group_stop() for the case when current is traced
pty: do tty_flip_buffer_push without port->lock in pty_write
pwm: img: Fix null pointer access in probe
pwm: lpss: Add range limit check for the base_unit register value
pwm: lpss: Fix off by one error in base_unit math in pwm_lpss_prepare()
qtnfmac: fix resource leaks on unsupported iftype error return path
quota: clear padding in v2r1_mem2diskdqb()
r8169: fix data corruption issue on RTL8402
r8169: fix issue with forced threading in combination with shared interrupts
r8169: fix operation under forced interrupt threading
ramfs: fix nommu mmap with gaps in the page cache
rapidio: fix error handling path
rapidio: fix the missed put_device() for rio_mport_add_riodev
ravb: Fix bit fields checking in ravb_hwtstamp_get()
RDMA/addr: Fix race with netevent_callback()/rdma_addr_cancel()
RDMA/cma: Consolidate the destruction of a cma_multicast in one place
RDMA/cma: Remove dead code for kernel rdmacm multicast
RDMA/hns: Add a check for current state before modifying QP
RDMA/hns: Fix missing sq_sig_type when querying QP
RDMA/hns: Fix the wrong value of rnr_retry when querying qp
RDMA/hns: Set the unsupported wr opcode
RDMA/ipoib: Set rtnl_link_ops for ipoib interfaces
RDMA/mlx5: Disable IB_DEVICE_MEM_MGT_EXTENSIONS if IB_WR_REG_MR can't work
RDMA/mlx5: Fix potential race between destroy and CQE poll
RDMA/qedr: Fix inline size returned for iWARP
RDMA/qedr: Fix memory leak in iWARP CM
RDMA/qedr: Fix qp structure memory leak
RDMA/qedr: Fix return code if accept is called on a destroyed qp
RDMA/qedr: Fix use of uninitialized field
RDMA/rxe: Fix skb lifetime in rxe_rcv_mcast_pkt()
RDMA/rxe: Handle skb_clone() failure in rxe_recv.c
RDMA/ucma: Add missing locking around rdma_leave_multicast()
RDMA/ucma: Fix locking for ctx->events_reported
RDMA/umem: Fix ib_umem_find_best_pgsz() for mappings that cross a page boundary
RDMA/umem: Fix signature of stub ib_umem_find_best_pgsz()
RDMA/umem: Prevent small pages from being returned by ib_umem_find_best_pgsz()
regulator: defer probe when trying to get voltage from unresolved supply
regulator: resolve supply after creating regulator
reiserfs: Fix memory leak in reiserfs_parse_options()
reiserfs: only call unlock_new_inode() if I_NEW
Revert "coresight: Make sysfs functional on topologies with per core sink"
ring-buffer: Fix recursion protection transitions between interrupt context
ring-buffer: Return 0 on success from ring_buffer_resize()
riscv: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO
rpmsg: glink: Use complete_all for open states
rpmsg: smd: Fix a kobj leak in in qcom_smd_parse_edge()
rtc: rx8010: don't modify the global rtc ops
rtl8xxxu: prevent potential memory leak
rtw88: increse the size of rx buffer size
s390/pkey: fix paes selftest failure with paes and pkey static build
s390/qeth: don't let HW override the configured port role
s390/startup: avoid save_area_sync overflow
s390/stp: add locking to sysfs functions
samples/bpf: Fix possible deadlock in xdpsock
sched/fair: Fix wrong cpu selecting from isolated domain
sched/features: Fix !CONFIG_JUMP_LABEL case
scripts/setlocalversion: make git describe output more reliable
scsi: be2iscsi: Fix a theoretical leak in beiscsi_create_eqs()
scsi: bfa: Fix error return in bfad_pci_init()
scsi: core: Don't start concurrent async scan on same host
scsi: csiostor: Fix wrong return value in csio_hw_prep_fw()
scsi: ibmvfc: Fix error return in ibmvfc_probe()
scsi: ibmvscsi: Fix potential race after loss of transport
scsi: mpt3sas: Fix sync irqs
scsi: mptfusion: Fix null pointer dereferences in mptscsih_remove()
scsi: mvumi: Fix error return in mvumi_io_attach()
scsi: qedf: Return SUCCESS if stale rport is encountered
scsi: qedi: Fix list_del corruption while removing active I/O
scsi: qedi: Protect active command list to avoid list corruption
scsi: qla2xxx: Fix crash on session cleanup with unload
scsi: qla2xxx: Fix wrong return value in qla_nvme_register_hba()
scsi: qla2xxx: Fix wrong return value in qlt_chk_unresolv_exchg()
scsi: qla2xxx: Warn if done() or free() are called on an already freed srb
scsi: qla4xxx: Fix an error handling path in 'qla4xxx_get_host_stats()'
scsi: smartpqi: Avoid crashing kernel for controller issues
scsi: target: core: Add CONTROL field for trace events
scsi: target: tcmu: Fix warning: 'page' may be used uninitialized
scsi: ufs: ufs-qcom: Fix race conditions caused by ufs_qcom_testbus_config()
sctp: Fix COMM_LOST/CANT_STR_ASSOC err reporting on big-endian platforms
seccomp: Make duplicate listener detection non-racy
selftests/bpf: Define string const as global for test_sysctl_prog.c
selftests/bpf: Fix test_sysctl_loop{1, 2} failure due to clang change
selftests: forwarding: Add missing 'rp_filter' configuration
selftests/ftrace: Change synthetic event name for inter-event-combined test
selftests/powerpc: Fix eeh-basic.sh exit codes
selftests: rtnetlink: load fou module for kci_test_encap_fou() test
selftests/x86/fsgsbase: Reap a forgotten child
selftests/x86/fsgsbase: Test PTRACE_PEEKUSER for GSBASE with invalid LDT GS
serial: 8250_mtk: Fix uart_get_baud_rate warning
serial: pl011: Fix lockdep splat when handling magic-sysrq interrupt
serial: qcom_geni_serial: To correct QUP Version detection logic
serial: txx9: add missing platform_driver_unregister() on error in serial_txx9_init
sfp: Fix error handing in sfp_probe()
sgl_alloc_order: fix memory leak
slimbus: core: check get_addr before removing laddr ida
slimbus: core: do not enter to clock pause mode in core
slimbus: qcom-ngd-ctrl: disable ngd in qmi server down callback
SMB3: Resolve data corruption of TCP server info fields
soc: fsl: qbman: Fix return value on success
socket: don't clear SOCK_TSTAMP_NEW when SO_TIMESTAMPNS is disabled
socket: fix option SO_TIMESTAMPING_NEW
sparc64: remove mm_cpumask clearing to fix kthread_use_mm race
spi: bcm2835: fix gpio cs level inversion
spi: omap2-mcspi: Improve performance waiting for CHSTAT
spi: spi-s3c64xx: Check return values
spi: spi-s3c64xx: swap s3c64xx_spi_set_cs() and s3c64xx_enable_datapath()
spi: sprd: Release DMA channel also on probe deferral
staging: comedi: cb_pcidas: Allow 2-channel commands for AO subdevice
staging: emxx_udc: Fix passing of NULL to dma_alloc_coherent()
staging: fieldbus: anybuss: jump to correct label in an error path
staging: octeon: Drop on uncorrectable alignment or FCS error
staging: octeon: repair "fixed-link" support
staging: rtl8192u: Do not use GFP_KERNEL in atomic context
SUNRPC: fix copying of multiple pages in gss_read_proxy_verf()
SUNRPC: Mitigate cond_resched() in xprt_transmit()
svcrdma: fix bounce buffers for unaligned offsets and multiple pages
tcp: fix to update snd_wl1 in bulk receiver fast path
tcp: Prevent low rmem stalls with SO_RCVLOWAT.
tipc: fix memory leak caused by tipc_buf_append()
tipc: fix the skb_unshare() in tipc_buf_append()
tipc: fix use-after-free in tipc_bcast_get_mode
tracing: Fix out of bounds write in get_trace_buf
tty: hvcs: Don't NULL tty->driver_data until hvcs_cleanup()
tty: ipwireless: fix error handling
tty: make FONTX ioctl use the tty pointer they were actually passed
tty: serial: earlycon dependency
tty: serial: fsl_lpuart: add LS1028A support
tty: serial: fsl_lpuart: fix lpuart32_poll_get_char
tty: serial: fsl_lpuart: LS1021A has a FIFO size of 16 words, like LS1028A
tty: serial: lpuart: fix lpuart32_write usage
ubi: check kthread_should_stop() after the setting of task state
ubifs: dent: Fix some potential memory leaks while iterating entries
ubifs: Don't parse authentication mount options in remount process
ubifs: Fix a memleak after dumping authentication mount options
ubifs: journal: Make sure to not dirty twice for auth nodes
ubifs: mount_ubifs: Release authentication resource in error handling path
ubifs: xattr: Fix some potential memory leaks while iterating entries
udf: Avoid accessing uninitialized data on failed inode read
udf: Fix memory leak when mounting
udf: Limit sparing table size
uio: free uio id after uio file node is freed
um: change sigio_spinlock to a mutex
USB: Add NO_LPM quirk for Kingston flash drive
USB: adutux: fix debugging
usb: cdc-acm: add quirk to blacklist ETAS ES58X devices
usb: cdc-acm: fix cooldown mechanism
USB: cdc-acm: handle broken union descriptors
USB: cdc-wdm: Make wdm_flush() interruptible and add wdm_fsync().
usb: cdns3: gadget: free interrupt after gadget has deleted
usb: cdns3: gadget: suspicious implicit sign extension
usb: core: Solve race condition in anchor cleanup functions
usb: dwc2: Fix INTR OUT transfers in DDMA mode.
usb: dwc2: Fix parameter type in function pointer prototype
usb: dwc3: Add splitdisable quirk for Hisilicon Kirin Soc
usb: dwc3: core: add phy cleanup for probe error handling
usb: dwc3: core: don't trigger runtime pm when remove driver
usb: dwc3: ep0: Fix delay status handling
usb: dwc3: ep0: Fix ZLP for OUT ep0 requests
usb: dwc3: gadget: Check MPS of the request length
usb: dwc3: gadget: END_TRANSFER before CLEAR_STALL command
usb: dwc3: gadget: Resume pending requests after CLEAR_STALL
usb: dwc3: pci: Allow Elkhart Lake to utilize DSM method for PM functionality
usb: dwc3: simple: add support for Hikey 970
usb: gadget: f_ncm: allow using NCM in SuperSpeed Plus gadgets.
usb: gadget: f_ncm: fix ncm_bitrate for SuperSpeed and above.
usb: gadget: function: printer: fix use-after-free in __lock_acquire
usb: gadget: u_ether: enable qmult on SuperSpeed Plus as well
usb: host: fsl-mph-dr-of: check return of dma_set_mask()
usb: mtu3: fix panic in mtu3_gadget_stop()
usb: ohci: Default to per-port over-current protection
USB: serial: cyberjack: fix write-URB completion race
USB: serial: option: add LE910Cx compositions 0x1203, 0x1230, 0x1231
USB: serial: option: add Quectel EC200T module support
USB: serial: option: add Telit FN980 composition 0x1055
usb: typec: tcpm: During PR_SWAP, source caps should be sent only after tSwapSourceStart
usb: typec: tcpm: reset hard_reset_count for any disconnect
usb: xhci: omit duplicate actions when suspending a runtime suspended host.
usb: xhci: Workaround for S3 issue on AMD SNPS 3.0 xHC
vfio iommu type1: Fix memory leak in vfio_iommu_type1_pin_pages
vfio/pci: Clear token on bypass registration failure
vfio/pci: Decouple PCI_COMMAND_MEMORY bit checks from is_virtfn
video: fbdev: pvr2fb: initialize variables
video: fbdev: radeon: Fix memleak in radeonfb_pci_register
video: fbdev: sis: fix null ptr dereference
video: fbdev: vga16fb: fix setting of pixclock because a pass-by-value error
VMCI: check return value of get_user_pages_fast() for errors
vringh: fix __vringh_iov() when riov and wiov are different
vsock: use ns_capable_noaudit() on socket create
vt: Disable KD_FONT_OP_COPY
vt: keyboard, extend func_buf_lock to readers
vt: keyboard, simplify vt_kdgkbsent
w1: mxc_w1: Fix timeout resolution problem leading to bus error
watchdog: Fix memleak in watchdog_cdev_register
watchdog: sp5100: Fix definition of EFCH_PM_DECODEEN3
watchdog: Use put_device on error
wcn36xx: Fix reported 802.11n rx_highest rate wcn3660/wcn3680
x86/asm: Replace __force_order with a memory clobber
x86/events/amd/iommu: Fix sizeof mismatch
x86/fpu: Allow multiple bits in clearcpuid= parameter
x86/kexec: Use up-to-dated screen_info copy to fill boot params
x86/mce: Add Skylake quirk for patrol scrub reported errors
x86/mce: Make mce_rdmsrl() panic on an inaccessible MSR
x86/nmi: Fix nmi_handle() duration miscalculation
x86/PCI: Fix intel_mid_pci.c build error when ACPI is not enabled
x86/unwind/orc: Fix inactive tasks with stack pointer in %sp on GCC 10 compiled kernels
x86/xen: disable Firmware First mode for correctable memory errors
xen/blkback: use lateeoi irq binding
xen/events: add a new "late EOI" evtchn framework
xen/events: add a proper barrier to 2-level uevent unmasking
xen/events: avoid removing an event channel while handling it
xen/events: block rogue events for some time
xen/events: defer eoi in case of excessive number of events
xen/events: fix race in evtchn_fifo_unmask()
xen/events: switch user event channels to lateeoi model
xen/events: use a common cpu hotplug hook for event channels
xen/gntdev.c: Mark pages as dirty
xen/netback: use lateeoi irq binding
xen/pciback: use lateeoi irq binding
xen/pvcallsback: use lateeoi irq binding
xen/scsiback: use lateeoi irq binding
xfs: don't free rt blocks when we're doing a REMAP bunmapi call
xfs: fix deadlock and streamline xfs_getfsmap performance
xfs: fix high key handling in the rt allocator's query_range function
xfs: fix realtime bitmap/summary file truncation when growing rt volume
xfs: flush for older, xfs specific ioctls
xfs: limit entries returned when counting fsmap records
xfs: make sure the rt allocator doesn't run off the end
xhci: don't create endpoint debugfs entry before ring buffer is set.
2020-11-13 03:15:56 +03:00

1725 lines
56 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)
# brp-python-bytecompile uses /usr/bin/python,
# but it is a different python version in different ROSA
# releases; there is no good way to tell brp-python-bytecompile
# which iterpreter to use; so just disable it to avoid problems
%define _python_bytecompile_build 0
# Probably dwz bug, on i686 only file is not packaged:
# /usr/lib/debug/usr/bin/trace-5.4.40-3.i386.debug.#dwz#.b5xuKG
# dwz compresses only debuginfo from perf, cpupower, uml,
# not the kernel itself (because it is stripped not by RPM),
# so we do not loose much by disabling it.
%global _find_debuginfo_dwz_opts %{nil}
%define kernelversion 5
%define patchlevel 4
# sublevel is used for stable-based kernels
%define sublevel 77
# 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
%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
%bcond_without oblig_signed_modules
%else
%bcond_with nickel
%bcond_with gost_sign
%bcond_with oblig_signed_modules
%endif
# Build binary out-of-tree kernel modules (experimental)
%if %{mdvver} >= 201905
%bcond_without binary_extra_modules
%else
%bcond_with binary_extra_modules
%endif
%bcond_with ccache
%bcond_without flow_abi
# 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_modxz}
%define kmod_suffix .xz
%else
%define kmod_suffix .gz
%endif
%if !%{build_debug}
# Disable debug rpms.
%define _enable_debug_packages %{nil}
%define debug_package %{nil}
%endif
# http://nickdesaulniers.github.io/blog/2018/06/02/speeding-up-linux-kernel-builds-with-ccache/
%if %{with ccache}
%define kmake KBUILD_BUILD_TIMESTAMP='' %make CC='ccache gcc'
%else
%define kmake %make CC='gcc'
%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
# TODO: make a separate package "ksobirator" and BR it
# after testing these macros properly
Source3: macros.ksobirator
%{load:%{SOURCE3}}
# 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 5 from http://aufs.sourceforge.net/
Patch109: fs-aufs.patch
Patch110: fs-aufs-2.patch
# For kmod() generator of RPM Provides
# Changes version of aacraid.ko
Patch111: 0001-Remove-RPM-illegal-chars-from-module-version.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
# Add sysctl to disable disk-based swap
Patch304: 0001-mm-add-sysctl-to-disable-disk-based-swap.patch
# Support loading GOST-signed modules
Patch305: 0001-crypto-support-loading-GOST-signed-kernel-modules.patch
# Allow to off modules signature check dynamically
Patch306: 0001-ROSA-ima-allow-to-off-modules-signature-check-dynami.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
%if %{with binary_extra_modules}
BuildRequires: kernel-source-rtl8821ce
BuildRequires: kernel-source-shredder-kernel
BuildRequires: kernel-source-tripso
BuildRequires: kernel-source-virtualbox
# TODO: drop it for kernels >= 5.6
# because all guest modules have been upstreamized
# https://www.phoronix.com/scan.php?page=news_item&px=VirtualBox-Shared-Folder-5.6
BuildRequires: kernel-source-virtualbox-vboxadditions
# rosa-test-suite is maintained in certified branches only
# nlkm, memfreetest, pcietest
%if %{with nickel}
BuildRequires: kernel-source-rosa-test-suite
%endif
%endif #with binary_extra_modules
%if %{with ccache}
BuildRequires: ccache
%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
%if %{with flow_abi}
Requires: kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
%endif
Recommends: crda
# Keep these deps on old platforms
# but get rid of puling gcc etc. by the kernel on newer platforms
%if %{build_devel} && %{mdvver} < 201900
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_autoinstaller >/dev/null 2>&1; then
dkms_autoinstaller start %{kver_full}
fi
%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
#------------------------------------------------
%if %{with binary_extra_modules}
%ksob_mk_module_pkg -n 8821ce -s net/wireless
%ksob_mk_module_pkg -n shredder-kernel -s extra -r rosa-shredder-user
%ksob_mk_module_pkg -n xt_TRIPSO -s net -r tripso
# virtualbox host
%ksob_mk_module_pkg -n vboxnetflt -s misc
%ksob_mk_module_pkg -n vboxnetadp -s misc
%ksob_mk_module_pkg -n vboxdrv -s misc
%ksob_mk_module_pkg -n vboxpci -s misc
#------------------------------------------------
# a package which will pull all those modules
%package -n kernel-modules-virtualbox-host-%{flavour}-%{kernelversion}.%{patchlevel}-latest
Summary: Meta package to pull VirtualBox host kernel modules for kernel-%{flavour}-%{kernelversion}.%{patchlevel}
Group: System/Kernel and hardware
Version: %{kversion}
Release: %{fullrpmrel}
Requires: kernel-module-vboxnetflt-%{flavour}-%{buildrel}
Requires: kernel-module-vboxnetadp-%{flavour}-%{buildrel}
Requires: kernel-module-vboxdrv-%{flavour}-%{buildrel}
Requires: kernel-module-vboxpci-%{flavour}-%{buildrel}
%description -n kernel-modules-virtualbox-host-%{flavour}-%{kernelversion}.%{patchlevel}-latest
Meta package to pull VirtualBox host kernel modules for kernel-%{flavour}-%{kernelversion}.%{patchlevel}
%files -n kernel-modules-virtualbox-host-%{flavour}-%{kernelversion}.%{patchlevel}-latest
# empty
#------------------------------------------------
# virtualbox guest, to be dropped in kernels 5.6+ (upsreamized)
%ksob_mk_module_pkg -n vboxvideo -s misc
%ksob_mk_module_pkg -n vboxguest -s misc
%ksob_mk_module_pkg -n vboxsf -s misc
#------------------------------------------------
# a package which will pull all those modules
%package -n kernel-modules-virtualbox-guest-%{flavour}-%{kernelversion}.%{patchlevel}-latest
Summary: Meta package to pull VirtualBox guest kernel modules for kernel-%{flavour}-%{kernelversion}.%{patchlevel}
Group: System/Kernel and hardware
Version: %{kversion}
Release: %{fullrpmrel}
Requires: kernel-module-vboxvideo-%{flavour}-%{buildrel}
Requires: kernel-module-vboxguest-%{flavour}-%{buildrel}
Requires: kernel-module-vboxsf-%{flavour}-%{buildrel}
%description -n kernel-modules-virtualbox-guest-%{flavour}-%{kernelversion}.%{patchlevel}-latest
Meta package to pull VirtualBox guest kernel modules for kernel-%{flavour}-%{kernelversion}.%{patchlevel}
%files -n kernel-modules-virtualbox-guest-%{flavour}-%{kernelversion}.%{patchlevel}-latest
# empty
#------------------------------------------------
%if %{with nickel}
%ksob_mk_module_pkg -n nlkm -s misc
%ksob_mk_module_pkg -n memfreetest -s misc
%ksob_mk_module_pkg -n pcietest -s misc
%endif
%endif #binary_extra_modules
############################
%if %{with flow_abi}
%package -n kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
Summary: Directory to install third-party binary kernel modules for kernels %{kernelversion}.%{patchlevel}.x
Group: System/Kernel and hardware
%description -n kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
This package contains a directory to install third-party binary kernel modules for kernels %{kernelversion}.%{patchlevel}.x.
Some vendors provide binary-only kernel modules. They can put them into /lib/modules/%{kernelversion}.%{patchlevel}-rosa-flow-abi.
kmod tools will find them for kernels 5.4.x of "generic" and "nickel" flavours,
but there is no guarantee that these modules will load and work correctly on newer
or older kernels then the ones they were build against.
We call this "flow ABI" because most ABIs are not changed between %{kernelversion}.%{patchlevel}.x releases,
but there are no specific guarantees. ABI may evolve and change.
We highly recommend to use DKMS and build third-party kernel modules from source for every kernel!
This package does nothing, just owns a directory for third-party binary kernel modules.
%files -n kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
/lib/modules/%{kernelversion}.%{patchlevel}-rosa-flow-abi
%endif #with flow_abi
################################################
%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
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
# Disable disk-based swap (swap files and partitions) on certified systems by default
# because we cannot guarantee that data stored in swap is erased from disk securely.
# Our patch, based on Chromium OS kernel, allows to use only zram if CONFIG_DISK_BASED_SWAP_DEFAULT_ON=y.
# sysctl vm.disk_based_swap = 1 to allow disk-based swap, = 0 to disable it.
# Note that CONFIG_ZRAM_WRITEBACK is still on.
#sed -i '/CONFIG_DISK_BASED_SWAP_DEFAULT_ON/d' .config
#%if %{with nickel}
#echo 'CONFIG_DISK_BASED_SWAP_DEFAULT_ON=n' >> %{build_dir}/.config.append
#%else
echo 'CONFIG_DISK_BASED_SWAP_DEFAULT_ON=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
# Install modules
mkdir -p %{temp_modules}/%{kver_full}
%smake INSTALL_MOD_PATH=%{temp_root} KERNELRELEASE=%{kver_full} modules_install
%if %{with binary_extra_modules}
# Build and install procedure is specific to each Makefile from kernmel-source-* packages
# See also: https://www.kernel.org/doc/html/latest/kbuild/modules.html
# Copy directory because write permissions are required
# `make modules_install` must be done before this, otherwise these copied files will be deleted
cp -r "$(rpm -q --qf '/usr/src/rtl8821ce-%%{VERSION}-%%{RELEASE}' kernel-source-rtl8821ce)" kernel-source-rtl8821ce
pushd kernel-source-rtl8821ce
%kmake KSRC=%{src_dir} M="$PWD"
mkdir -p %{temp_modules}/%{kver_full}/kernel/net/wireless/
cp 8821ce.ko %{temp_modules}/%{kver_full}/kernel/net/wireless/8821ce.ko
popd
rm -fr kernel-source-rtl8821ce
cp -r "$(rpm -q --qf '/usr/src/shredder-kernel-%%{VERSION}-%%{RELEASE}' kernel-source-shredder-kernel)" kernel-source-shredder-kernel
pushd kernel-source-shredder-kernel
%kmake KERNEL_PATH=%{src_dir}
mkdir -p %{temp_modules}/%{kver_full}/kernel/extra/
cp shredder-kernel.ko %{temp_modules}/%{kver_full}/kernel/extra/
popd
rm -fr kernel-source-shredder-kernel
cp -r "$(rpm -q --qf '/usr/src/tripso-%%{VERSION}-%%{RELEASE}' kernel-source-tripso)" kernel-source-tripso
pushd kernel-source-tripso
%kmake KDIR=%{src_dir}
mkdir -p %{temp_modules}/%{kver_full}/kernel/net
cp xt_TRIPSO.ko %{temp_modules}/%{kver_full}/kernel/net/
popd
rm -fr kernel-source-tripso
# build commands for virtualbox are based on the ones from the virtualbox package
cp -r "$(rpm -q --qf '/usr/src/vboxadditions-%%{VERSION}-%%{RELEASE}' kernel-source-virtualbox-vboxadditions)" kernel-source-virtualbox-vboxadditions
mkdir -p %{temp_modules}/%{kver_full}/kernel/misc/
pushd kernel-source-virtualbox-vboxadditions
%kmake KERN_DIR=%{src_dir} KERN_VER=%{kver_full} -C vboxguest
cp -fv vboxguest/Module.symvers vboxsf/
%kmake KERN_DIR=%{src_dir} KERN_VER=%{kver_full} -C vboxsf
# TODO: vboxvideo is also build inside the upstream kernel...
# vboxsf is not in kernel 5.4
# https://www.phoronix.com/scan.php?page=news_item&px=VirtualBox-Shared-Folder-5.6
cp -fv vboxsf/Module.symvers vboxvideo/
%kmake KERN_DIR=%{src_dir} KERN_VER=%{kver_full} -C vboxvideo
for i in vboxguest vboxsf vboxvideo
do
cp -v "${i}/${i}.ko" %{temp_modules}/%{kver_full}/kernel/misc/
done
popd
cp -r "$(rpm -q --qf '/usr/src/virtualbox-%%{VERSION}-%%{RELEASE}' kernel-source-virtualbox)" kernel-source-virtualbox
mkdir -p %{temp_modules}/%{kver_full}/kernel/misc/
pushd kernel-source-virtualbox
make -C vboxdrv KERN_DIR=%{src_dir} KERN_VER=%{kver_full}
cp -fv vboxdrv/Module.symvers vboxnetflt
cp -fv vboxdrv/Module.symvers vboxnetadp
make -C vboxnetflt KERN_DIR=%{src_dir} KERN_VER=%{kver_full}
make -C vboxnetadp KERN_DIR=%{src_dir} KERN_VER=%{kver_full}
cp -fv vboxnetadp/Module.symvers vboxpci/
make -C vboxpci KERN_DIR=%{src_dir} KERN_VER=%{kver_full}
for i in vboxnetflt vboxnetadp vboxdrv vboxpci
do
cp -v "${i}/${i}.ko" %{temp_modules}/%{kver_full}/kernel/misc/
done
popd
%if %{with nickel}
# rosa-test-suite uses /sr/src/xxx-version, not /usr/src/xxx-version-release
cp -r "$(rpm -q --qf '/usr/src/rosa-test-suite-%%{VERSION}' kernel-source-rosa-test-suite)" kernel-source-rosa-test-suite
pushd kernel-source-rosa-test-suite
mkdir -p %{temp_modules}/%{kver_full}/kernel/misc/
for i in nlkm memfreetest pcietest
do
cat << EOF > Makefile
obj-m := ${i}.o
all:
make -C %{src_dir} M=\$(PWD) modules
EOF
%kmake
cp -fv ${i}.ko %{temp_modules}/%{kver_full}/kernel/misc/
done
popd
%endif #with nickel <- with binary_extra_modules
%endif #with binary_extra_modules
%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
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}
# 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}
# 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}
# https://patchwork.kernel.org/patch/11446123/
_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
%if %{with binary_extra_modules}
# 8821ce.ko.debug will not be excluded and will be in the main debug subpackage
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8821ce.ko%{kmod_suffix}
%exclude %{_modulesdir}/%{kver_full}/kernel/extra/shredder-kernel.ko%{kmod_suffix}
%exclude %{_modulesdir}/%{kver_full}/kernel/net/xt_TRIPSO.ko%{kmod_suffix}
# vbox host: vboxnetflt vboxnetadp vboxdrv vboxpci
# vbox guest: vboxvideo vboxguest vboxsf
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/vbox*.ko%{kmod_suffix}
%if %{with nickel}
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/nlkm.ko%{kmod_suffix}
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/memfreetest.ko%{kmod_suffix}
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/pcietest.ko%{kmod_suffix}
%endif
%endif #with binary_extra_modules
%{_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
# Versionize shebang (#!/usr/bin/env python -> #!/usr/bin/python3)
sed -i -e '1 s,^.*$,#!%{__python3},' %{buildroot}%{_prefix}/libexec/perf-core/scripts/python/exported-sql-viewer.py
# 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
# delete junk
rm -fr %{buildroot}%{_usr}/src/*/kernel-source-*
%if %{with flow_abi}
# Prefix with "zzz" to put this directory into the end of search list
# and avoid tricks with depmod configs
mkdir -p %{buildroot}/lib/modules/%{kernelversion}.%{patchlevel}-rosa-flow-abi
ln -s /lib/modules/%{kernelversion}.%{patchlevel}-rosa-flow-abi %{buildroot}%{_modulesdir}/%{kver_full}/kernel/zzz-%{kernelversion}.%{patchlevel}-rosa-flow-abi
%endif