No, this is crap. We don't introduce random hooks like this just because the block layer has shit-for-brains and cannot be bothered to do things right. The fact is, the whole locking in the block layer open routine is total and utter crap. It doesn't lock the right thing, even with your change *anyway* (or with the change Jens had). Absolutely nothing in "mmap_region()" cares at all about the block-size anywhere - it's generic, after all - so locking around it is f*cking pointless. There is no way in hell that the caller of ->mmap can *ever* care about the block size, since it never even looks at it. Don't do random crap like this. Why does the code think that mmap matters so much anyway? As you say, the mmap itself does *nothing*. It has no impact for the block size. Linus On Wed, Nov 28, 2012 at 9:25 AM, Mikulas Patocka <mpatocka@xxxxxxxxxx> wrote: > > > On Wed, 28 Nov 2012, Jens Axboe wrote: > >> On 2012-11-28 04:57, Mikulas Patocka wrote: >> > >> > This patch is wrong because you must check if the device is mapped while >> > holding bdev->bd_block_size_semaphore (because >> > bdev->bd_block_size_semaphore prevents new mappings from being created) >> >> No it doesn't. If you read the patch, that was moved to i_mmap_mutex. > > Hmm, it was wrong before the patch and it is wrong after the patch too. > > The problem is that ->mmap method doesn't do the actual mapping, the > caller of ->mmap (mmap_region) does it. So we must actually catch > mmap_region and protect it with the lock, not ->mmap. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html