Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

memstick/mspro_block: fix handling of read-only devices

Use set_disk_ro to propagate the read-only state to the block layer
instead of checking for it in ->open and leaking a reference in case
of a read-only device.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220215094514.3828912-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Christoph Hellwig and committed by
Jens Axboe
6dab421b e2efa079

+4 -6
+4 -6
drivers/memstick/core/mspro_block.c
··· 186 186 187 187 mutex_lock(&mspro_block_disk_lock); 188 188 189 - if (msb && msb->card) { 189 + if (msb && msb->card) 190 190 msb->usage_count++; 191 - if ((mode & FMODE_WRITE) && msb->read_only) 192 - rc = -EROFS; 193 - else 194 - rc = 0; 195 - } 196 191 197 192 mutex_unlock(&mspro_block_disk_lock); 198 193 ··· 1233 1238 capacity *= msb->page_size >> 9; 1234 1239 set_capacity(msb->disk, capacity); 1235 1240 dev_dbg(&card->dev, "capacity set %ld\n", capacity); 1241 + 1242 + if (msb->read_only) 1243 + set_disk_ro(msb->disk, true); 1236 1244 1237 1245 rc = device_add_disk(&card->dev, msb->disk, NULL); 1238 1246 if (rc)