Доработки в ядре
Предложения по доработкам в ядре
Центр собирает предложения по доработкам в ядре, нацеленным на повышение его безопасности. Реализация наиболее интересных предложений, одобренных Технических комитетом, будет поддержана Центром. Поддержка может заключаться в выделении грантов на реализацию предложения сообществом или в его реализации силами сотрудников центра.
Для того, чтобы представить своё предложение на рассмотрение, опишите его в системе управления задачами.
Задача1 - Реализация совместимости ядра Linux с более безопасными реализациями UEFI
Реализации UEFI, нацеленные на повышенную безопасность, реализуют принцип отсутствия памяти одновременно доступной и для записи, и для исполнения. Поэтому память, например, выделенная с помощью EFI_LOADER_CODE, не будет доступна для записи и это будет соответствовать UEFI спецификации. Но текущие версии ядра Linux не стартуют с такими UEFI прошивками, падая с page fault.
Спецификация UEFI не указывает какие атрибуты будут присвоены выделяемой памяти, например, будет ли она записываемая и/или исполняемая. В связи с этим реализации прошивок с повышенной безопасностью в соответствии со спецификацией не разрешают исполнение выделенной их средствами памяти. Например, память, имеющая тип EFI_LOADER_CODE, может быть не исполняемой, что противоречит интуиции, но соответствует спецификации.
При загрузке ядра Linux код загрузки предполагает, что вся память является и записываемой, и исполняемой, что вызывает ошибку страничной адресации на вышеуказанных прошивках и прерывает процесс нормальной загрузки ядра. Необходимо убрать необоснованные предположения кода загрузки об атрибутах памяти и устанавливать их явно.
Сотрудниками Центра подготовлены патчи, исправляющие эту проблему:
V1
V2
V3
и они уже приняты в основную ветку ядра:
efi: libstub: declare DXE services table
efi: libstub: ensure allocated memory to be executable
efi/x86: libstub: Fix typo in __efi64_argmap* name
Задача2 - Повышение безопасности ядра Linux на ранних этапах загрузки
При загрузке платформе x86_64 ядро Linux использует страничную адресацию, которая позволяет ограничить исполнение регионов памяти и/или запись в них. Однако эти возможности не применяются и вся память используется с максимальными правами доступа и отображением при обращении.
Первое упрощает эксплуатацию потенциально присутствующих в коде уязвимостей с применением перезаписи кода/данных, например переполнения буфера. Второе скрывает ошибки работы с памятью.
Следует максимально ограничить права доступа, реализовав политику WˆX (Write-xor-Execute). Эта политика заключается в запрете на использование регионов памяти доступных одновременно на запись и исполнение. Её применение не позволяет атакующему записать необходимый код и сразу передать на него управление, усложняя задачу выполнения произвольного кода.
Основная сложность реализации WˆX заключается в корректном определении регионов памяти и установке требуемых ими атрибутов памяти, так как
- в процессе загрузки механизмы страничной адресации не всегда доступны и не во всех случаях управляются непосредственно ядром;
- память повторно используется для регионов с различными требуемыми атрибутами;
- регионы перемещаются на перекрывающиеся с другими регионами адреса.
Процесс ранней загрузки ядра
Ядро Linux хранится на диске, как файл, содержащий ядро в сжатом виде и небольшой код ранней загрузки, задачей которого является распаковка образа ядра и подготовка окружения для продолжения инициализации (см. Рис. 1). Этот код поддерживает множество интерфейсов загрузки, но все они передают управление на общую для всех интерфейсов часть пути исполнения. Этим вызвана необходимость повторной инициализации состояния процессора и перемещения ядра.
Однако при загрузке с использованием интерфейсов 64-битных UEFI (узлы, выделенные пунктиром на Рис. 1) окружение известно, и, если избежать использования общей для всех путей исполнения части кода и распаковывать ядро напрямую из окружения, предоставляемого UEFI-совместимой прошивкой, можно значительно упростить код загрузки ядра и избежать необходимости копирования образа ядра.
Поэтому работа ведётся над двумя наборами патчей. Первый повышает безопасность кода общего пути исполнения, реализуя для него политику WˆX везде, где это применимо. Второй реализует отдельный путь исполнения при загрузке с использованием 64-битных UEFI-совместимых прошивок, тем самым позволяя избавиться от перемещений ядра и повторного использования памяти, что позволяет реализовать для этого способа загрузки политику WˆX в полном объеме.
Исправленные ошибки
Исправления ошибок, подготовленные в ходе работы Центра, и уже принятые в основную ветку ядра (426 исправлений):
ALSA: firewire-lib: Avoid division by zero in apply_constraint_to_size()
net: sched: use RCU read-side critical section in taprio_dump()
net: sched: fix use-after-free in taprio_change()
octeon_ep: Add SKB allocation failures handling in __octep_oq_process_rx()
xfrm: fix one more kernel-infoleak in algo dumping
ALSA: hda/cs8409: Fix possible NULL dereference
drm/vmwgfx: Handle surface check failure correctly
iio: accel: bma400: Fix uninitialized variable field_value in tap event handling
net/mlx5e: Fix NULL deref in mlx5e_tir_builder_alloc()
fbdev: sisfb: Fix strbuf array overflow
KEYS: prevent NULL pointer dereference in find_asymmetric_key()
RDMA/irdma: fix error message in irdma_modify_qp_roce()
RDMA/cxgb4: Added NULL check for lookup_atid
arm64: esr: Define ESR_ELx_EC_* constants as UL
drbd: Add NULL check for net_conf to prevent dereference in state validation
wifi: cfg80211: fix two more possible UBSAN-detected off-by-one errors
wifi: mac80211: use two-phase skb reclamation in ieee80211_do_stop()
wifi: cfg80211: fix UBSAN noise in cfg80211_wext_siwscan()
net: sched: consistently use rcu_replace_pointer() in taprio_change()
PCI: kirin: Fix buffer overflow in kirin_pcie_parse_port()
ext4: fix i_data_sem unlock order in ext4_ind_migrate()
cpufreq: amd-pstate: add check for cpufreq_cpu_get's return value
wifi: rtw88: remove CPT execution branch never used
drm/radeon/evergreen_cs: fix int overflow errors in cs track offsets
net: core: annotate socks of struct sock_reuseport with __counted_by
wifi: brcmsmac: clean up unnecessary current_ampdu_cnt and related checks
ACPI: PMIC: Remove unneeded check in tps68470_pmic_opregion_probe()
drm/i915: Fix possible int overflow in skl_ddi_calculate_wrpll()
wifi: rtw88: always wait for both firmware loading attempts
wifi: ath9k: fix possible integer overflow in ath9k_get_et_stats()
wifi: mac80211: refactor block ack management code
f2fs: avoid potential int overflow in sanity_check_area_boundary()
f2fs: fix several potential integer overflows in file offsets
f2fs: prevent possible int overflow in dir_block_index()
Revert "media: tuners: fix error return code of hybrid_tuner_request_state()"
ice: Adjust over allocation of memory in ice_sched_add_root_node() and ice_sched_add_node()
drm/msm: Fix incorrect file name output in adreno_request_fw()
drm/stm: Avoid use-after-free issues with crtc and plane
media: coda: cast an operand of multiplication to a larger type
drm/i915/guc: prevent a possible int overflow in wq offsets
platform/x86: dell-smbios: Fix error path in dell_smbios_init()
btrfs: qgroup: don't use extent changeset when not needed
staging: iio: frequency: ad9834: Validate frequency parameter value
nfc: pn533: Add poll mod list filling check
wifi: mac80211: free skb on error path in ieee80211_beacon_get_ap()
cxgb4: add forgotten u64 ivlan cast before shift
Bluetooth: l2cap: always unlock channel in l2cap_conless_channel()
drm/i915: Fix possible int overflow in skl_ddi_calculate_wrpll()
iommu: sprd: Avoid NULL deref in sprd_iommu_hw_en
bna: adjust 'name' buf size of bna_tcb and bna_ccb structures
wifi: rtw89: Fix array index mistake in rtw89_sta_info_get_iter()
ASoC: amd: Adjust error handling in case of absent codec device
udf: prevent integer overflow in udf_bitmap_free_blocks()
net: missing check virtio
remoteproc: imx_rproc: Fix refcount mistake in imx_rproc_addr_init
mm/memory_hotplug: prevent accessing by index=-1
remoteproc: imx_rproc: Skip over memory region when node value is NULL
ASoC: qcom: Adjust issues in case of DT error in asoc_qcom_lpass_cpu_platform_probe()
PCI: keystone: Fix NULL pointer dereference in case of DT error in ks_pcie_setup_rc_app_regs()
PCI: al: Check IORESOURCE_BUS existence during probe
media: pci: ivtv: Add check for DMA map result
ubi: eba: properly rollback inside self_check_eba
saa7134: Unchecked i2c_transfer function result fixed
apparmor: use kvfree_sensitive to free data->data
ppp: reject claimed-as-LCP but actually malformed packets
octeontx2-af: Fix incorrect value output on error path in rvu_check_rsrc_availability()
mlxsw: core_linecards: Fix double memory deallocation in case of invalid INI file
wifi: cfg80211: wext: add extra SIOCSIWSCAN data check
wifi: mac80211: fix UBSAN noise in ieee80211_prep_hw_scan()
mac802154: fix time calculation in ieee802154_configure_durations()
xdp: Remove WARN() from __xdp_reg_mem_model()
gpio: davinci: Validate the obtained number of IRQs
netrom: Fix a memory leak in nr_heartbeat_expiry()
bnxt_en: Adjust logging of firmware messages in case of released token in __hwrm_send()
liquidio: Adjust a NULL pointer handling path in lio_vf_rep_copy_packet
net/mlx5: Fix tainted pointer delete is case of flow rules creation fail
net: wwan: iosm: Fix tainted pointer delete is case of region creation fail
dma-buf: handle testing kthreads creation failure
signalfd: drop an obsolete comment
signalfd: fix error return code
dma-mapping: benchmark: handle NUMA_NO_NODE correctly
dma-mapping: benchmark: fix node id validation
dma-mapping: benchmark: avoid needless copy_to_user if benchmark fails
dma-mapping: benchmark: fix up kthread-related error handling
nfs: fix undefined behavior in nfs_block_bits()
ata: pata_legacy: make legacy_exit() work again
jffs2: prevent xattr node from overflowing the eraseblock
thermal/drivers/tsens: Fix null pointer dereference
drm: vc4: Fix possible null pointer dereference
cppc_cpufreq: Fix possible null pointer dereference
drm/msm/dpu: Add callback function pointer check before its call
iommu/arm-smmu-v3: Free MSIs in case of ENOMEM
rcu: Fix buffer overflow in print_cpu_stall_info()
crypto: algboss - remove NULL check in cryptomgr_schedule_probe()
ASoC: kirkwood: Fix potential NULL dereference
rcu-tasks: Fix show_rcu_tasks_trace_gp_kthread buffer overflow
udf: udftime: prevent overflow in udf_disk_stamp_to_time()
sunrpc: removed redundant procp check
greybus: lights: check return of get_channel_from_mode
crypto: bcm - Fix pointer arithmetic
wifi: rtlwifi: always assume QoS mode in rtl8192cu
wifi: rtlwifi: drop WMM stubs from rtl8192cu
mtd: partitions: redboot: Added conversion of operands to a larger type
cxgb4: unnecessary check for 0 in the free_sge_txq_uld() function
mtd: rawnand: hynix: fixed typo
scsi: hpsa: Fix allocation size for Scsi_Host private data
ssb: Fix potential NULL pointer dereference in ssb_device_uevent()
media: ngene: Add dvb_ca_en50221_init return value check
wifi: cfg80211: fix the order of arguments for trace events of the tx_rx_evt class
wifi: mac80211: don't use rate mask for scanning
phy: marvell: a3700-comphy: Fix hardcoded array size
phy: marvell: a3700-comphy: Fix out of bounds read
drm: nv04: Fix out of bounds access
net: phy: micrel: Fix potential null pointer dereference
octeontx2-af: Add array index check
of: module: prevent NULL pointer dereference in vsnprintf()
ACPICA: debugger: check status of acpi_evaluate_object() in acpi_db_walk_for_fields()
dma-buf: Fix NULL pointer dereference in sanitycheck()
wifi: cfg80211: fix rdev_dump_mpp() arguments order
fbmon: prevent division by zero in fb_videomode_from_videomode()
net: phy: fix phy_read_poll_timeout argument type in genphy_loopback
assoc_array: fix the return value in assoc_array_insert_mid_shortcut()
platform/mellanox: mlxreg-hotplug: Remove redundant NULL-check
block: prevent division by zero in blk_rq_stat_sum()
Bluetooth: mgmt: remove NULL check in add_ext_adv_params_complete()
Bluetooth: mgmt: remove NULL check in mgmt_set_connectable_complete()
fbdev: viafb: fix typo in hw_bitblt_1 and hw_bitblt_2
mac802154: fix llsec key resources release in mac802154_llsec_key_del
i40e: remove unnecessary qv_info ptr NULL checks
iavf: drop duplicate iavf_{add|del}_cloud_filter() calls
RDMA/rtrs-clt: Check strnlen return len in sysfs mpath_policy_store()
media: pvrusb2: remove redundant NULL check
media: go7007: add check of return value of go7007_read_addr()
can: softing: remove redundant NULL check
wifi: brcmfmac: do not cast hidden SSID attribute value to boolean
i2c: Remove redundant comparison in npcm_i2c_reg_slave
drm/amd/display: fix NULL checks for adev->dm.dc in amdgpu_dm_fini()
drm/radeon/ni: Fix wrong firmware size logging in ni_init_microcode()
usb: storage: sddr55: fix sloppy typing in sddr55_{read|write}_data()
drm/radeon/ni_dpm: remove redundant NULL check
drm/radeon: remove dead code in ni_mc_load_microcode()
cpufreq: brcmstb-avs-cpufreq: add check for cpufreq_cpu_get's return value
wifi: rtlwifi: cleanup few rtlxxx_tx_fill_desc() routines
wifi: ath9k: fix LNA selection in ath_ant_try_scan()
drm/tegra: put drm_gem_object ref on error in tegra_fb_create
wifi: rt2x00: simplify rt2x00crypto_rx_insert_iv()
wifi: brcmsmac: phy: Remove unreachable code
afs: Increase buffer size in afs_update_volume_status()
net: stmmac: Fix incorrect dereference in interrupt handlers
pppoe: Fix memory leak in pppoe_sendmsg()
ASoC: rt5645: Fix deadlock in rt5645_jack_detect_work()
ksmbd: free aux buffer if ksmbd_iov_pin_rsp_read fails
nfc: nci: free rx_data_reassembly skb on NCI device cleanup
drm/ttm: fix ttm pool initialization for no-dma-device drivers
btrfs: ref-verify: free ref cache before clearing mount opt
drm/exynos: gsc: minor fix for loop iteration in gsc_runtime_resume
ipvs: avoid stat macros calls from preemptible context
ksmbd: free ppace array on error in parse_dacl
apparmor: avoid crash when parsed profile name is empty
wifi: rt2x00: remove useless code in rt2x00queue_create_tx_descriptor()
cpufreq: scmi: process the result of devm_of_clk_add_hw_provider()
apparmor: fix possible memory leak in unpack_trans_table
crypto: safexcel - Add error handling for dma_map_sg() calls
drm/radeon/r600_cs: Fix possible int overflows in r600_cs_check_reg()
drm/radeon/r100: Fix integer overflow issues in r100_cs_track_check()
scsi: isci: Remove redundant check in isci_task_request_build()
scsi: fnic: Return error if vmalloc() failed
apparmor: free the allocated pdb objects
calipso: fix memory leak in netlbl_calipso_add_pass()
pinctrl: stm32: return errors from stm32_gpio_direction_output()
wifi: rtlwifi: simplify rtl_action_proc() and rtl_tx_agg_start()
ACPI: LPIT: Avoid u32 multiplication overflow
ACPI: video: check for error while searching for backlight device parent
pstore: ram_core: fix possible overflow in persistent_ram_init_ecc()
drm/radeon: check return value of radeon_ring_lock()
afs: Fix overwriting of result of DNS query
net: 9p: avoid freeing uninit memory in p9pdu_vreadf
vsock/virtio: Fix unsigned integer wrap around in virtio_transport_has_space()
net: atlantic: Fix NULL dereference of skb pointer in
octeontx2-af: Fix possible buffer overflow
bcache: prevent potential division by zero error
cifs: fix check of rc in function generate_smb3signingkey
cifs: spnego: add ';' in HOST_KEY_LEN
net: atm: Remove redundant check.
usb: host: xhci-plat: fix possible kernel oops while resuming
fs: ocfs2: check status values
rtc: efi: fixed typo in efi_procfs()
wifi: iwlwifi: drop NULL pointer check in iwl_mvm_tzone_set_trip_temp()
wifi: rtlwifi: remove unreachable code in rtl92d_dm_check_edca_turbo()
md-cluster: check for timeout while a new disk adding
wifi: rtlwifi: cleanup few rtlxxxx_set_hw_reg() routines
pinctrl: mediatek: moore: handle mtk_hw_set_value() errors in mtk_pinmux_set_mux()
pinctrl: mediatek: paris: handle mtk_hw_set_value() errors in mtk_pmx_set_mux()
media: s3c-camif: Avoid inappropriate kfree()
wifi: mwifiex: simplify PCIE write operations
wifi: ath10k: drop HTT_DATA_TX_STATUS_DOWNLOAD_FAIL
ipv6: mcast: Remove redundant comparison in igmp6_mcf_get_next()
ipv4: igmp: Remove redundant comparison in igmp_mcf_get_next()
wifi: ath11k: drop NULL pointer check in ath11k_update_per_peer_tx_stats()
srcu: Fix srcu_struct node grpmask overflow on 64-bit systems
drm/amd/display: remove useless check in should_enable_fbc()
mtd: lpddr_cmds: Add literal suffix
wifi: ath11k: drop redundant check in ath11k_dp_rx_mon_dest_process()
wifi: ath9k: simplify ar9003_hw_process_ini()
net: pktgen: Fix interface flags printing
fbdev: core: syscopyarea: fix sloppy typing
fbdev: core: cfbcopyarea: fix sloppy typing
pinctrl: nuvoton: wpcm450: fix out of bounds write
dm zoned: free dmz->ddev array in dmz_put_zoned_devices
drivers/net: process the result of hdlc_open() and add call ofhdlc_close() in uhdlc_close()
RDMA/cxgb4: Check skb value for failure to allocate
net: rds: Fix possible NULL-pointer dereference
ethernet: tg3: remove unreachable code
tracing: Remove extra space at the end of hwlat_detector/mode
smb: propagate error code of extract_sharename()
spi: tegra114: Remove unnecessary NULL-pointer checks
wifi: mwifiex: avoid possible NULL skb pointer dereference
scsi: isci: Return result of sas_register_ha()
autofs: fix memory leak of waitqueues in autofs_catatonic_mode
fs: ocfs2: namei: check return value of ocfs2_add_entry()
drm/amd/display: Return value of function
pinctrl: at91-pio4: drop useless check in atmel_conf_pin_config_dbg_show()
wifi: mwifiex: handle possible mwifiex_write_reg() errors
wifi: mwifiex: handle possible sscanf() errors
wifi: libertas: prefer kstrtoX() for simple integer conversions
wifi: libertas: handle possible spu_write_u16() errors
wifi: libertas: cleanup SDIO reset
NFSv4/pnfs: minor fix for cleanup path in nfs4_get_device_info
pinctrl: pinmux: handle radix_tree_insert() errors in pinmux_generic_add_function()
pinctrl: core: handle radix_tree_insert() errors in pinctrl_register_one_pin()
pinctrl: core: handle radix_tree_insert() errors in pinctrl_generic_add_group()
HID: logitech-dj: Fix error handling in logi_dj_recv_switch_to_dj_mode()
media: cx24120: Add retval check for cx24120_message_send()
wifi: ath9k: protect WMI command response buffer replacement with a lock
wifi: ath9k: fix races between ath9k_wmi_cmd and ath9k_wmi_ctrl_rx
media: dib7000p: Fix potential division by zero
NFSv4: fix out path in __nfs4_get_acl_uncached
NFSv4.2: fix error handling in nfs42_proc_getxattr
broadcom: b44: Use b44_writephy() return value
drivers: vxlan: vnifilter: free percpu vni stats on error path
scsi: 53c700: Check that command slot is not NULL
tipc: stop tipc crypto on failure in tipc_node_create
media: pulse8-cec: handle possible ping error
media: pci: cx23885: fix error handling for cx23885 ATSC boards
netfilter: nf_conntrack_sip: fix the ct_sip_parse_numerical_param() return value
drm/radeon: fix possible division-by-zero errors
ntfs: do not dereference a null ctx on error
usb: dwc3: qcom: Fix potential memory leak
wifi: ath9k: don't allow to overwrite ENDPOINT0 attributes
isa: Remove unnecessary checks
drm/amdkfd: Fix potential deallocation of previously deallocated memory
hwmon: (f71882fg) prevent possible division by zero
sctp: fix a potential OOB access in sctp_sched_set_sched()
wifi: ath9k: avoid referencing uninit memory in ath9k_wmi_ctrl_rx
drm/i915/dp: prevent potential div-by-zero
PM: domains: fix integer overflow issues in genpd_parse_state()
radeon: avoid double free in ci_dpm_init()
apparmor: fix missing error check for rhashtable_insert_fast
media: usb: Check az6007_read() return value
net: macsec: fix double free of percpu stats
drm/nouveau/dp: check for NULL nv_connector->native_mode
drm/nouveau: add nv_encoder pointer check for NULL
can: j1939: avoid possible use-after-free when j1939_can_rx_register fails
can: j1939: change j1939_netdev_lock type to mutex
batman-adv: Broken sync while rescheduling delayed work
netfilter: nf_tables: Add null check for nla_nest_start_noflag() in nft_dump_basechain_hook()
HID: wacom: Add error check to wacom_parse_and_register()
HID: wacom: avoid integer overflow in wacom_intuos_inout()
udp6: Fix race condition in udp6_sendmsg & connect
ipv6: Fix out-of-bounds access in ipv6_find_tlv()
drm/sched: Remove redundant check
btrfs: print-tree: parent bytenr must be aligned to sector size
drm/amd/display: Fix potential null dereference
bnx2: remove deadcode in bnx2_init_cpus()
mmc: sdhci-of-esdhc: fix quirk to ignore command inhibit for data
scsi: megaraid: Fix mega_cmd_done() CMDID_INT_CMDS
iio: adc: qcom-pm8xxx-xoadc: Remove useless condition in pm8xxx_xoadc_parse_channel()
bnxt: avoid overflow in bnxt_get_nvram_directory()
RDMA/rdmavt: Delete unnecessary NULL check
RDMA/siw: Fix potential page_array out of range access
wifi: ath6kl: reduce WARN to dev_dbg() in callback
wifi: ath9k: hif_usb: fix memory leak of remain_skbs
wifi: ath6kl: minor fix for allocation size
writeback: fix call of incorrect macro
ASN.1: Fix check for strdup() success
mlxfw: fix null-ptr-deref in mlxfw_mfa2_tlv_next()
qlcnic: check pci_reset_function result
qed/qed_sriov: guard against NULL derefs from qed_iov_get_vf_info
mm: fix error handling for map_deny_write_exec
mm: deduplicate error handling for map_deny_write_exec
power: supply: axp288_fuel_gauge: Added check for negative values
qed/qed_mng_tlv: correctly zero out ->min instead of ->hour
qed/qed_dev: guard against a possible division by zero
nfc: pn533: initialize struct pn533_out_arg properly
x86/mm: Fix use of uninitialized buffer in sme_enable()
tracing: Fix wrong return in kprobe_event_gen_test.c
drm/cirrus: NULL-check pipe->plane.state->fb in cirrus_pipe_update()
ALSA: ice1712: Delete unreachable code in aureon_add_controls()
ALSA: ice1712: Do not left ice->gpio_mutex locked in aureon_add_controls()
nfc: fix memory leak of se_io context in nfc_genl_se_io
rbd: avoid use-after-free in do_rbd_add() when rbd_dev_create() fails
RDMA/cxgb4: Fix potential null-ptr-deref in pass_establish()
udf: Check consistency of Space Bitmap Descriptor
iommu/amd: Add a length limitation for the ivrs_acpihid command-line parameter
RDMA/cxgb4: add null-ptr-check after ip_dev_find()
netfilter: conntrack: remote a return value of the 'seq_print_acct' function.
dm ioctl: drop always-false condition
ALSA: hda/ca0132: minor fix for allocation size
ACPICA: nsrepair: handle cases without a return value correctly
wifi: ath9k: hif_usb: clean up skbs if ath9k_hif_usb_rx_stream() fails
wifi: ath9k: htc_hst: free skb in ath9k_htc_rx_msg() if there is no callback function
drm/amd/display: drop unnecessary NULL checks in debugfs
wifi: orinoco: check return value of hermes_write_wordrec()
clk: renesas: cpg-mssr: Fix use after free if cpg_mssr_common_init() failed
f2fs: file: drop useless initializer in expand_inode_data()
PCI/IOV: Enlarge virtfn sysfs name buffer
RDMA/cxgb4: remove unnecessary NULL check in __c4iw_poll_cq_one()
efi/libstub: Add memory attribute protocol definitions
staging: rts5208: Added value check
genirq/ipi: Fix NULL pointer deref in irq_data_get_affinity_mask()
i40e: Add checking for null for nlmsg_find_attr()
ALSA: emux: Avoid potential array out-of-bound in snd_emux_xg_control()
RDMA/irdma: Fix potential NULL-ptr-dereference
xfrm: compat: change expression for switch in xfrm_xlate64
pinctrl: single: fix potential NULL dereference
efi: fix potential NULL deref in efi_mem_reserve_persistent
net: openvswitch: fix flow memory leak in ovs_flow_cmd_new
net: qrtr: free memory on error path in radix_tree_insert()
ALSA: hda/via: Avoid potential array out-of-bound in add_secret_dac_path()
squashfs: harden sanity check in squashfs_read_xattr_id_table
scsi: hpsa: Fix allocation size for scsi_host_alloc()
trace_events_hist: add check for return value of 'create_hist_field'
net: wan: Add checks for NULL for utdm in undo_uhdlc_init and unmap_si_regs
netfilter: ipset: Fix overflow before widen in the bitmap_ip_create() function.
iavf/iavf_main: actually log ->src mask when talking about it
drivers/net/bonding/bond_3ad: return when there's no aggregator
net/ethtool/ioctl: split ethtool_get_phy_stats into multiple helpers
qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure
MIPS: BCM63xx: Add check for NULL for clk in clk_enable
net: devlink: Add missing error check to devlink_resource_put()
wifi: rtlwifi: btcoexist: fix conditions branches that are never executed
net: vmw_vsock: vmci: Check memcpy_from_msg()
wifi: rtlwifi: rtl8192se: remove redundant rtl_get_bbreg() call
relay: fix type mismatch when allocating memory in relay_create_buf()
ethtool: avoiding integer overflow in ethtool_phys_id()
btrfs: replace strncpy() with strscpy()
iommu/amd: Check return value of mmu_notifier_register()
sctp: remove unnecessary NULL checks in sctp_enqueue_event()
sctp: remove unnecessary NULL check in sctp_ulpq_tail_event()
sctp: remove unnecessary NULL check in sctp_association_init()
arm64: ptrace: user_regset_copyin_ignore() always returns 0
wifi: ath9k: verify the expected usb_endpoints are present
wifi: ath9k: hif_usb: Fix use-after-free in ath9k_hif_usb_reg_in_cb()
wifi: ath10k: Check return value of ath10k_get_arvif() in ath10k_wmi_event_tdls_peer()
crypto: nitrox - avoid double free on error path in nitrox_sriov_init()
ovl: Add comment on upperredirect reassignment
wifi: ath9k: hif_usb: fix memory leak of urbs in ath9k_hif_usb_dealloc_tx_urbs()
net: encx24j600: Fix invalid logic in reading of MISTAT register
net: encx24j600: Add parentheses to fix precedence
net: dsa: ksz: Check return value
HID: hid-lg4ff: Add check for empty lbuf
net: ethernet: nixge: fix NULL dereference
pinctrl: single: Fix potential division by zero
net/mlx4: Check retval of mlx4_bitmap_init
ring_buffer: Do not deactivate non-existant pages
cifs: add check for returning value of SMB2_set_info_init
cifs: add check for returning value of SMB2_close_init
drm/amd/pm: smu7_hwmgr: fix potential off-by-one overflow in 'performance_levels'
drm/amd/pm: vega10_hwmgr: fix potential off-by-one overflow in 'performance_levels'
arm64: topology: fix possible overflow in amu_fie_setup()
iommu/io-pgtable-arm: Remove iommu_dev==NULL special case
drm/via: Add new condition to via_dma_cleanup()
ALSA: asihpi - Remove useless code in hpi_meter_get_peak()
usb: gadget: function: rndis: limit # of RNDIS instances to 1000
tty: n_gsm: avoid call of sleeping functions from atomic context
tty: n_gsm: replace kicktimer with delayed_work
xen/privcmd: fix error exit of privcmd_ioctl_dm_op()
platform/chrome: fix double-free in chromeos_laptop_prepare()
net: dsa: sja1105: fix buffer overflow in sja1105_setup_devlink_regions()
drm/amdgpu: remove useless condition in amdgpu_job_stop_all_jobs_on_sched()
of: fdt: fix off-by-one error in unflatten_dt_nodes()
can: j1939: j1939_session_destroy(): fix memory leak of skbs
can: j1939: j1939_sk_queue_activate_next_locked(): replace WARN_ON_ONCE with netdev_warn_once()
platform/x86: sony-laptop: Remove useless comparisons in sony_pic_read_possible_resource()
ACPI/PCI: Remove useless NULL pointer checks
usb: cdns3: change place of 'priv_ep' assignment in cdns3_gadget_ep_dequeue(), cdns3_gadget_ep_enable()
video: fbdev: sis: fix typos in SiS_GetModeID()
wifi: p54: add missing parentheses in p54_flush()
RDMA: remove useless condition in siw_create_cq()
net/mlx5e: Removed useless code in function
xfs: removed useless condition in function xfs_attr_node_get
usb: host: xhci: use snprintf() in xhci_decode_trb()
ata: libata-scsi: fix result type of ata_ioc32()
NFSD: restore EINVAL error translation in nfsd_commit()
efi/x86: libstub: Fix typo in _ _ efi64_argmap* name
usb: musb: core: drop redundant checks
wifi: iwlegacy: 4965: fix potential off-by-one overflow in il4965_rs_fill_link_cmd()
ata: libata-core: fix sloppy parameter type in ata_exec_internal[_sg]()
ata: libata-eh: fix sloppy result type of ata_eh_nr_in_flight()
crypto: sun8i-ss - fix infinite loop in sun8i_ss_setup_ivs()
dmaengine: stm32-mdma: Remove dead code in stm32_mdma_irq_handler()
ALSA: usb-audio: US16x08: Move overflow check before array access
ata: libata-core: fix sloppy typing in ata_id_n_sectors()
drm/radeon: fix potential buffer overflow in ni_set_mc_special_registers()
ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo()
ASoC: max98090: Move check for invalid values before casting in max98090_put_enab_tlv()
mmc: core: block: fix sloppy typing in mmc_blk_ioctl_multi_cmd()
ata: pata_via: fix sloppy typing in via_do_set_mode()
ata: pata_sil680: fix result type of sil680_sel{dev|reg}()
ata: libata-core: fix parameter type in ata_xfer_mode2shift()
mmc: core: use sysfs_emit() instead of sprintf()
usb: host: ehci-q: make qtd_fill() returnunsigned int
ata: libata: make ata_host_suspend()void
usb: host: xhci: drop redundant checks
ata: libata: ata_{sff|std}_prereset() always return 0
ata: libata-acpi: kill ata_acpi_on_suspend()
sh_eth: sh_eth_close() always returns 0
ravb: ravb_close() always returns 0
phy: make phy_set_max_speed()void
NFS: remove unneeded check in decode_devicenotify_args()
fs: fd tables have to be multiples of BITS_PER_LONG
mISDN: Fix memory leak in dsp_pipeline_build()
net: dsa: lantiq_gswip: fix use after free in gswip_remove()
sctp: remove unreachable code from sctp_sf_violation_chunk()
dsa: mv88e6xxx: fix debug print for SPEED_UNFORCED
media: allegro: ignore interrupt if mailbox is not initialized