I think this is a race in ccw_io_helper(). The stress-ng sysfs stressor is running multiple threaded reads of /sys/devices/css0/0.0.0000/0.0.0000/virtio0/block/vda/cache_type which results in reads via virtio_cread8() and ultimately reads using virtio_ccw_get_config()
I added debug into virtio_cread8 and it returns 1 99% of the time, and sometimes in a threaded read we get it returning garbage, such as 200 in the following trace:
I think this is a race in ccw_io_helper(). The stress-ng sysfs stressor is running multiple threaded reads of /sys/devices/ css0/0. 0.0000/ 0.0.0000/ virtio0/ block/vda/ cache_type which results in reads via virtio_cread8() and ultimately reads using virtio_ ccw_get_ config( )
I added debug into virtio_cread8 and it returns 1 99% of the time, and sometimes in a threaded read we get it returning garbage, such as 200 in the following trace:
[ 39.767777] virtio_cread8 32 -> 1 block/virtio_ blk.c:576!
[ 39.767933] virtio_cread8 32 -> 1
[ 39.787712] virtio_cread8 32 -> 200
[ 39.787810] kernel BUG at drivers/