OpenCloudOS-Kernel/drivers
Andrey Skvortsov dc60b25540 crypto: sun8i-ce - Fix use after free in unprepare
commit 183420038444547c149a0fc5f58e792c2752860c upstream.

sun8i_ce_cipher_unprepare should be called before
crypto_finalize_skcipher_request, because client callbacks may
immediately free memory, that isn't needed anymore. But it will be
used by unprepare after free. Before removing prepare/unprepare
callbacks it was handled by crypto engine in crypto_finalize_request.

Usually that results in a pointer dereference problem during a in
crypto selftest.
 Unable to handle kernel NULL pointer dereference at
                                      virtual address 0000000000000030
 Mem abort info:
   ESR = 0x0000000096000004
   EC = 0x25: DABT (current EL), IL = 32 bits
   SET = 0, FnV = 0
   EA = 0, S1PTW = 0
   FSC = 0x04: level 0 translation fault
 Data abort info:
   ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
 user pgtable: 4k pages, 48-bit VAs, pgdp=000000004716d000
 [0000000000000030] pgd=0000000000000000, p4d=0000000000000000
 Internal error: Oops: 0000000096000004 [#1] SMP

This problem is detected by KASAN as well.
 ==================================================================
 BUG: KASAN: slab-use-after-free in sun8i_ce_cipher_do_one+0x6e8/0xf80 [sun8i_ce]
 Read of size 8 at addr ffff00000dcdc040 by task 1c15000.crypto-/373

 Hardware name: Pine64 PinePhone (1.2) (DT)
 Call trace:
  dump_backtrace+0x9c/0x128
  show_stack+0x20/0x38
  dump_stack_lvl+0x48/0x60
  print_report+0xf8/0x5d8
  kasan_report+0x90/0xd0
  __asan_load8+0x9c/0xc0
  sun8i_ce_cipher_do_one+0x6e8/0xf80 [sun8i_ce]
  crypto_pump_work+0x354/0x620 [crypto_engine]
  kthread_worker_fn+0x244/0x498
  kthread+0x168/0x178
  ret_from_fork+0x10/0x20

 Allocated by task 379:
  kasan_save_stack+0x3c/0x68
  kasan_set_track+0x2c/0x40
  kasan_save_alloc_info+0x24/0x38
  __kasan_kmalloc+0xd4/0xd8
  __kmalloc+0x74/0x1d0
  alg_test_skcipher+0x90/0x1f0
  alg_test+0x24c/0x830
  cryptomgr_test+0x38/0x60
  kthread+0x168/0x178
  ret_from_fork+0x10/0x20

 Freed by task 379:
  kasan_save_stack+0x3c/0x68
  kasan_set_track+0x2c/0x40
  kasan_save_free_info+0x38/0x60
  __kasan_slab_free+0x100/0x170
  slab_free_freelist_hook+0xd4/0x1e8
  __kmem_cache_free+0x15c/0x290
  kfree+0x74/0x100
  kfree_sensitive+0x80/0xb0
  alg_test_skcipher+0x12c/0x1f0
  alg_test+0x24c/0x830
  cryptomgr_test+0x38/0x60
  kthread+0x168/0x178
  ret_from_fork+0x10/0x20

 The buggy address belongs to the object at ffff00000dcdc000
  which belongs to the cache kmalloc-256 of size 256
 The buggy address is located 64 bytes inside of
  freed 256-byte region [ffff00000dcdc000, ffff00000dcdc100)

Signed-off-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>
Fixes: 4136212ab1 ("crypto: sun8i-ce - Remove prepare/unprepare request")
Cc: <stable@vger.kernel.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-04-03 15:28:40 +02:00
..
accel accel/ivpu: Don't enable any tiles by default on VPU40xx 2024-03-01 13:35:01 +01:00
accessibility speakup: Fix 8bit characters from direct synth 2024-04-03 15:28:28 +02:00
acpi ACPI: scan: Fix device check notification handling 2024-03-26 18:19:35 -04:00
amba
android binder: signal epoll threads of self-work 2024-02-23 09:25:04 +01:00
ata ahci: asm1064: asm1166: don't limit reported ports 2024-04-03 15:28:37 +02:00
atm atm: idt77252: fix a memleak in open_card_ubr0 2024-02-16 19:10:49 +01:00
auxdisplay
base PM: sleep: wakeirq: fix wake irq warning in system suspend 2024-04-03 15:28:24 +02:00
bcma
block aoe: fix the potential use-after-free problem in aoecmd_cfg_pkts 2024-03-26 18:19:19 -04:00
bluetooth Bluetooth: btnxpuart: Fix btnxpuart_close 2024-04-03 15:28:27 +02:00
bus bus: mhi: ep: check the correct variable in mhi_ep_register_controller() 2024-03-26 18:20:06 -04:00
cache cache: ax45mp_cache: Align end size to cache boundary in ax45mp_dma_cache_wback() 2024-03-01 13:35:08 +01:00
cdrom
cdx
char tpm,tpm_tis: Avoid warning splat at shutdown 2024-04-03 15:28:31 +02:00
clk clk: qcom: mmcc-msm8974: fix terminating of frequency table arrays 2024-04-03 15:28:23 +02:00
clocksource clocksource/drivers/timer-ti-dm: Fix make W=n kerneldoc warnings 2024-01-25 15:35:42 -08:00
comedi comedi: comedi_test: Prevent timers rescheduling during deletion 2024-03-26 18:20:04 -04:00
connector connector/cn_proc: revert "connector: Fix proc_event_num_listeners count not cleared" 2024-02-23 09:25:01 +01:00
counter
cpufreq cpufreq: dt: always allocate zeroed cpumask 2024-04-03 15:28:35 +02:00
cpuidle cpuidle: haltpoll: Do not enable interrupts when entering idle 2024-01-25 15:35:15 -08:00
crypto crypto: sun8i-ce - Fix use after free in unprepare 2024-04-03 15:28:40 +02:00
cxl cxl/trace: Properly initialize cxl_poison region name 2024-04-03 15:28:36 +02:00
dax
dca
devfreq PM / devfreq: Synchronize devfreq_monitor_[start/stop] 2024-02-05 20:14:15 +00:00
dio
dma dmaengine: tegra210-adma: Update dependency to ARCH_TEGRA 2024-03-26 18:19:43 -04:00
dma-buf dma-buf: fix check in dma_resv_add_fence 2023-12-08 08:52:19 +01:00
edac EDAC/thunderx: Fix possible out-of-bounds string access 2024-01-25 15:35:12 -08:00
eisa
extcon extcon: fix possible name leak in extcon_dev_register() 2024-02-05 20:14:31 +00:00
firewire firewire: core: use long bus reset on gap count error 2024-03-26 18:19:14 -04:00
firmware x86/efistub: Don't clear BSS twice in mixed mode 2024-03-26 18:20:13 -04:00
fpga fpga: Fix memory leak for fpga_region_test_class_find() 2023-10-24 19:32:39 +02:00
fsi
gnss
gpio gpiolib: Pass consumer device through to core in devm_fwnode_gpiod_get_index() 2024-03-26 18:19:34 -04:00
gpu drm/nouveau: fix stale locked mutex in nouveau_gem_ioctl_pushbuf 2024-04-03 15:28:40 +02:00
greybus
hid HID: amd_sfh: Avoid disabling the interrupt 2024-03-26 18:19:53 -04:00
hsi
hte hte: tegra: Fix missing error code in tegra_hte_test_probe() 2023-11-20 11:59:08 +01:00
hv x86/hyperv: Use per cpu initial stack for vtl context 2024-03-26 18:20:06 -04:00
hwmon hwmon: (amc6821) add of_match table 2024-04-03 15:28:28 +02:00
hwspinlock
hwtracing hwtracing: hisi_ptt: Move type check to the beginning of hisi_ptt_pmu_event_init() 2024-03-26 18:20:06 -04:00
i2c i2c: imx: when being a target, mark the last read as processed 2024-03-01 13:35:10 +01:00
i3c i3c: dw: Disable IBI IRQ depends on hot-join and SIR enabling 2024-03-26 18:20:01 -04:00
idle x86: Fix CPUIDLE_FLAG_IRQ_ENABLE leaking timer reprogram 2024-01-25 15:35:12 -08:00
iio iio: adc: rockchip_saradc: use mask for write_enable bitfield 2024-04-03 15:28:22 +02:00
infiniband RDMA/mana_ib: Fix bug in creation of dma regions 2024-03-26 18:20:02 -04:00
input Input: iqs7222 - add support for IQS7222D v1.1 and v1.2 2024-03-26 18:20:02 -04:00
interconnect interconnect: qcom: sm8550: Enable sync_state 2024-02-23 09:24:57 +01:00
iommu iommu: Fix compilation without CONFIG_IOMMU_INTEL 2024-03-26 18:19:39 -04:00
ipack
irqchip irqchip/sifive-plic: Enable interrupt if needed before EOI 2024-03-01 13:35:01 +01:00
isdn isdn: mISDN: hfcsusb: Spelling fix in comment 2023-10-23 09:39:46 +01:00
leds leds: trigger: netdev: Fix kernel panic on interface rename trig notify 2024-04-03 15:28:27 +02:00
macintosh
mailbox mailbox: arm_mhuv2: Fix a bug for mhuv2_sender_interrupt 2024-02-05 20:14:31 +00:00
mcb mcb: fix error handling for different scenarios when parsing 2023-11-28 17:20:05 +00:00
md dm snapshot: fix lockup in dm_exception_table_exit 2024-04-03 15:28:37 +02:00
media media: nxp: imx8-isi: Mark all crossbar sink pads as MUST_CONNECT 2024-04-03 15:28:18 +02:00
memory memory: tegra: Correct DLA client names 2024-03-26 18:19:32 -04:00
memstick
message
mfd mfd: cs42l43: Fix wrong GPIO_FN_SEL and SPI_CLK_CONFIG1 defaults 2024-03-26 18:19:55 -04:00
misc mei: gsc_proxy: match component when GSC is on different bus 2024-03-26 18:20:04 -04:00
mmc mmc: core: Fix switch on gp3 partition 2024-04-03 15:28:27 +02:00
most
mtd mtd: rawnand: Constrain even more when continuous reads are enabled 2024-04-03 15:28:35 +02:00
mux
net wifi: brcmfmac: Demote vendor-specific attach/detach messages to info 2024-04-03 15:28:38 +02:00
nfc nfc: virtual_ncidev: Add variable to check if ndev is running 2023-12-20 17:01:59 +01:00
ntb NTB: fix possible name leak in ntb_register_device() 2024-03-26 18:19:48 -04:00
nubus
nvdimm nd_btt: Make BTT lanes preemptible 2023-11-20 11:59:19 +01:00
nvme nvme: fix reconnection fail due to reserved tag allocation 2024-03-26 18:20:09 -04:00
nvmem nvmem: meson-efuse: fix function pointer type mismatch 2024-04-03 15:28:28 +02:00
of of: property: fw_devlink: Fix stupid bug in remote-endpoint parsing 2024-03-06 14:48:39 +00:00
opp OPP: debugfs: Fix warning around icc_get_name() 2024-03-26 18:19:40 -04:00
parisc parisc/power: Fix power soft-off button emulation on qemu 2024-01-31 16:18:52 -08:00
parport parport: parport_serial: Add Brainboxes device IDs and geometry 2024-01-20 11:51:48 +01:00
pci PCI: hv: Fix ring buffer size calculation 2024-04-03 15:28:30 +02:00
pcmcia pcmcia: ds: fix possible name leak in error path in pcmcia_device_add() 2023-11-20 11:59:31 +01:00
peci
perf perf: RISCV: Fix panic on pmu overflow handler 2024-03-26 18:19:14 -04:00
phy phy: tegra: xusb: Add API to retrieve the port number of phy 2024-04-03 15:28:28 +02:00
pinctrl gpio: nomadik: fix offset bug in nmk_pmx_set() 2024-03-26 18:19:54 -04:00
platform platform/x86/intel/tpmi: Change vsec offset to u64 2024-04-03 15:28:31 +02:00
pmdomain pmdomain: qcom: rpmhpd: Drop SA8540P gfx.lvl 2024-03-26 18:19:23 -04:00
pnp PNP: ACPI: fix fortify warning 2024-02-05 20:14:15 +00:00
power power: supply: bq27xxx-i2c: Do not free non existing IRQ 2024-03-06 14:48:37 +00:00
powercap powercap: intel_rapl_tpmi: Fix System Domain probing 2024-04-03 15:28:19 +02:00
pps
ps3
ptp ptp: annotate data-race around q->head and q->tail 2023-11-28 17:19:51 +00:00
pwm pwm: sti: Fix capture for st,pwm-num-chan < st,capture-num-chan 2024-03-26 18:19:27 -04:00
rapidio
ras
regulator regulator: userspace-consumer: add module device table 2024-03-26 18:19:34 -04:00
remoteproc remoteproc: virtio: Fix wdg cannot recovery remote processor 2024-04-03 15:28:16 +02:00
reset reset: hisilicon: hi6220: fix Wvoid-pointer-to-enum-cast warning 2024-01-20 11:51:44 +01:00
rpmsg rpmsg: virtio: Free driver_override when rpmsg_remove() 2024-01-31 16:18:50 -08:00
rtc rtc: mt6397: select IRQ_DOMAIN instead of depending on it 2024-03-26 18:20:06 -04:00
s390 s390/zcrypt: fix reference counting on zcrypt card objects 2024-04-03 15:28:32 +02:00
sbus
scsi scsi: bfa: Fix function pointer type mismatch for hcb_qe->cbfn 2024-03-26 18:20:01 -04:00
sh
siox
slimbus slimbus: core: Remove usage of the deprecated ida_simple_xx() API 2024-04-03 15:28:28 +02:00
soc soc: fsl: qbman: Use raw spinlock for cgr_lock 2024-04-03 15:28:32 +02:00
soundwire soundwire: fix initializing sysfs for same devices on different buses 2024-01-31 16:18:47 -08:00
spi spi: spi-mt65xx: Fix NULL pointer access in interrupt handler 2024-03-26 18:20:13 -04:00
spmi spmi: mediatek: Fix UAF on device remove 2024-02-05 20:14:32 +00:00
ssb
staging media: staging: ipu3-imgu: Set fields before media_entity_pads_init() 2024-04-03 15:28:15 +02:00
target scsi: target: pscsi: Fix bio_put() for error case 2024-03-01 13:34:59 +01:00
tc
tee tee: optee: Fix supplicant based device enumeration 2023-12-13 18:45:11 +01:00
thermal thermal/drivers/mediatek: Fix control buffer enablement on MT7896 2024-04-03 15:28:30 +02:00
thunderbolt thunderbolt: Fix setting the CNS bit in ROUTER_CS_5 2024-02-23 09:25:13 +01:00
tty serial: Lock console when calling into driver before registration 2024-04-03 15:28:26 +02:00
ufs scsi: ufs: core: Remove the ufshcd_release() in ufshcd_err_handling_prepare() 2024-03-01 13:34:55 +01:00
uio uio: Fix use-after-free in uio_open 2024-01-20 11:51:48 +01:00
usb usb: gadget: tegra-xudc: Fix USB3 PHY retrieval logic 2024-04-03 15:28:28 +02:00
vdpa vdpa/mlx5: Allow CVQ size changes 2024-03-26 18:20:10 -04:00
vfio vfio/platform: Disable virqfds on cleanup 2024-04-03 15:28:30 +02:00
vhost virtio/vsock: send credit update during setting SO_RCVLOWAT 2024-01-25 15:35:26 -08:00
video backlight: lp8788: Fully initialize backlight_properties during probe 2024-03-26 18:19:56 -04:00
virt virt: sevguest: Fix passing a stack buffer as a scatterlist target 2023-11-20 11:59:30 +01:00
virtio virtio: reenable config if freezing device failed 2024-04-03 15:28:36 +02:00
vlynq
w1
watchdog watchdog: stm32_iwdg: initialize default timeout 2024-03-26 18:20:02 -04:00
xen xen/events: increment refcnt only if event channel is refcounted 2024-03-26 18:20:09 -04:00
zorro
Kconfig
Makefile