[PATCH] mtd: use refcount to prevent corruption
Richard Weinberger
richard at nod.at
Thu Jan 28 15:23:29 EST 2021
Tomas,
----- Ursprüngliche Mail -----
>> As Richard was saying, we are really open to enhance MTD refcounting.
>>
>> However, the issue you are facing is, IMHO, not related to MTD but to MFD.
>> There should be a way to avoid MFD to vanish by taking a reference of it
>> through mtd->_get_device(). I don't think addressing the case where MFD
>> vanishes while MTD (as a user) is still active is the right approach.
>
> I think it won't work because MFD sub-driver remove() is called and it must
> succeed because the main device is not accessible unlike glueubi which just
> returns -EBUSY.
Well, the trick in glubi (and other MTDs with "hotplug" support) is not to reject
removal of the sub-device. ->_put_device() is of return type void.
The key is grabbing a reference on the sub-device in ->_get_device() such that
the layer below doesn't even try to remove while the MTD is in use.
> so we postpone the mtd unregister to mtd_info->_put_device() but it that state
> we have nothing to hold
> on as the device is gone in remove()
> User will fail anyway, as the underlying device is not functional in that state.
> Anyway I've tried your suggestion, the kernel is crashing, hope I haven't done
> some silly bug.
Can you point us to the affected code?
This would help a lot to understand the issue better.
I'm sure we can find a solution.
Thanks,
//richard
More information about the linux-mtd
mailing list