It gets further without but still spams a lot of failure messages: The buggy address belongs to the object at ffffff80036a2200 which belongs to the cache kmalloc-128 of size 128 The buggy address is located 11 bytes to the right of 128-byte region [ffffff80036a2200, ffffff80036a2280) The buggy address belongs to the page: page:0000000046e01872 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x436a2 flags: 0x3fc0000000000200(slab) raw: 3fc0000000000200 dead000000000100 dead000000000122 f9ffff8001c01e00 raw: 0000000000000000 0000000080100010 00000001ffffffff f3ffff80036a2401 page dumped because: kasan: bad access detected pages's memcg:f3ffff80036a2401
Memory state around the buggy address: ffffff80036a2000: f6 f6 f6 f6 f6 f6 f6 f6 fe fe fe fe fe fe fe fe ffffff80036a2100: fa fa fa fa fe fe fe fe fe fe fe fe fe fe fe fe >ffffff80036a2200: f9 f9 f9 f9 f9 f9 f9 f9 fe fe fe fe fe fe fe fe ^ ffffff80036a2300: fc fc fc fc fe fe fe fe fe fe fe fe fe fe fe fe ffffff80036a2400: f3 f3 f3 f3 f3 f3 f3 f3 fe fe fe fe fe fe fe fe ================================================================== Disabling lock debugging due to kernel taint # kmalloc_oob_right: EXPECTATION FAILED at lib/test_kasan.c:86 Expected fail_data.report_expected == fail_data.report_found, but fail_data.report_expected == 1 fail_data.report_found == 0 not ok 1 - kmalloc_oob_right # kmalloc_oob_left: EXPECTATION FAILED at lib/test_kasan.c:98 Expected fail_data.report_expected == fail_data.report_found, but fail_data.report_expected == 1 fail_data.report_found == 0 not ok 2 - kmalloc_oob_left # kmalloc_node_oob_right: EXPECTATION FAILED at lib/test_kasan.c:110 Expected fail_data.report_expected == fail_data.report_found, but fail_data.report_expected == 1 fail_data.report_found == 0 not ok 3 - kmalloc_node_oob_right # kmalloc_pagealloc_oob_right: EXPECTATION FAILED at lib/test_kasan.c:130 Expected fail_data.report_expected == fail_data.report_found, but fail_data.report_expected == 1 fail_data.report_found == 0 not ok 4 - kmalloc_pagealloc_oob_right # kmalloc_pagealloc_uaf: EXPECTATION FAILED at lib/test_kasan.c:148 Expected fail_data.report_expected == fail_data.report_found, but fail_data.report_expected == 1 fail_data.report_found == 0 not ok 5 - kmalloc_pagealloc_uaf -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1921948 Title: MTE tags not checked properly for unaligned accesses at EL1 Status in QEMU: In Progress Bug description: For kernel memory accesses that span across two memory granules, QEMU's MTE implementation only checks the tag of the first granule but not of the second one. To reproduce this, build the Linux kernel with CONFIG_KASAN_HW_TAGS enabled, apply the patch below, and boot the kernel: diff --git a/sound/last.c b/sound/last.c index f0bb98780e70..04745cb30b74 100644 --- a/sound/last.c +++ b/sound/last.c @@ -5,12 +5,18 @@ */ #include <linux/init.h> +#include <linux/slab.h> #include <sound/core.h> static int __init alsa_sound_last_init(void) { struct snd_card *card; int idx, ok = 0; + + char *ptr = kmalloc(128, GFP_KERNEL); + pr_err("KASAN report should follow:\n"); + *(volatile unsigned long *)(ptr + 124); + kfree(ptr); printk(KERN_INFO "ALSA device list:\n"); for (idx = 0; idx < SNDRV_CARDS; idx++) { KASAN tags the 128 allocated bytes with the same tag as the returned pointer. The memory granule that follows the 128 allocated bytes has a different tag (with 1/15 probability). Expected result: a tag fault is detected and a KASAN report is printed when accessing bytes [124, 130). Observed result: no tag fault is detected and no KASAN report is printed. Here are the flags that I use to run QEMU if they matter: qemu-system-aarch64 -s -machine virt,mte=on -cpu max -m 2G -smp 2 -net user,host=10.0.2.10,hostfwd=tcp:127.0.0.1:10021-:22 -net nic -nographic -kernel ./Image -append "console=ttyAMA0 root=/dev/vda earlyprintk=serial" -drive file=./fs.img,format=raw,if=virtio -no- shutdown -no-reboot To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1921948/+subscriptions