Re: [PATCH 1/2] staging: zram: fix zram locking

From: Jerome Marchand
Date: Thu Sep 08 2011 - 04:05:54 EST


On 09/08/2011 03:35 AM, Nitin Gupta wrote:
> On 09/06/2011 09:02 AM, Jerome Marchand wrote:
>> Currently init_lock only prevents concurrent execution of zram_init_device()
>> and zram_reset_device() but not zram_make_request() nor sysfs store functions.
>>
>
> zram_make_request() initializes the device first time it is used and
> from then on no sysfs config writes are allowed till the device is reset
> -- for example, you cannot change disksize while a disk is in
> initialized state. So, I could not understand why we need to protect
> zram_make_request vs sysfs stores.

This is true for disksize_store() (which can race with zram_init_device(), thus
the write lock in it), not for reset_store(), which obviously can happen in
initialized state. I have actually hit those races with the following
reproducer:

---
#! /bin/sh

while true; do
for i in `seq 0 9`; do
echo 1 > /sys/block/zram0/reset&
echo $((1024*1024*500)) > /sys/block/zram0/disksize&
for i in `seq 1 10`; do
dd if=/dev/zero of=/dev/zram0 bs=4k count=1 2>/dev/null;
done
done;
wait;
done


>
> Thanks,
> Nitin
>
>
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/