On Wed, Dec 28, 2011 at 5:39 PM, Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote: > On 28/12/11 12:46, Shashidhar hiremath wrote: >> From: Shashidhar Hiremath <shashidharh@xxxxxxxxxxxxxxx> >> >> The Patch adds a check to disable the IOCTL from running when the card is mounted >> or device is opened elsewhere. > > What if someone wants to do that. The issue with not having this is that if there is huge size data transfer operation happening, the IOCTL issuing will corrupt the data transfer operation. So it would be better to finish the device's access by one thing and give control to ioctl after that. > > Generally the kernel does not prevent access to raw block devices > just because a file system is mounted on them, so I guess MMC should > not either. > > >> >> Signed-off-by: Shashidhar Hiremath <shashidharh@xxxxxxxxxxxxxxx> >> --- >> drivers/mmc/card/block.c | 6 ++++++ >> 1 files changed, 6 insertions(+), 0 deletions(-) >> >> diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c >> index 0cad48a..e680929 100644 >> --- a/drivers/mmc/card/block.c >> +++ b/drivers/mmc/card/block.c >> @@ -387,6 +387,12 @@ static int mmc_blk_ioctl_cmd(struct block_device *bdev, >> err = -EINVAL; >> goto cmd_done; >> } >> + /* Disallow the IOCTL run if card is already mounted or device is >> + * opened elsewhere */ >> + if (md->usage > 3) { >> + err = -EINVAL; >> + goto cmd_done; >> + } > > Checking the usage will not work consistently e.g. > if there is a sysfs access or another ioctl access at the > same time, or just some other kernel user of the device. > >> >> card = md->queue.card; >> if (IS_ERR(card)) { > > -- > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- regards, Shashidhar Hiremath -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html