1. 02 Apr, 2012 2 commits
    • Prasad Joshi's avatar
      logfs: initialize the number of iovecs in bio · cd8bfa9c
      Prasad Joshi authored
      This fixes the following crash when a LogFS file system, created on a
      encrypted LVM volume, was mounted
      
      [  526.548034] BUG: unable to handle kernel NULL pointer dereference at
      [  526.550106] IP: [<ffffffff8131ecab>] memcpy+0xb/0x120
      [  526.551008] PGD bd60067 PUD 1778d067 PMD 0
      [  526.551783] Oops: 0000 [#1] SMP
      
      <d>Pid: 2043, comm: mount
      <d>RIP: 0010:[<ffffffff8131ecab>]  [<ffffffff8131ecab>] memcpy+0xb/0x120
      Call Trace:
      	kcryptd_io_read+0xdb/0x100
      	crypt_map+0xfd/0x190
      	__map_bio+0x48/0x150
      	__split_and_process_bio+0x51b/0x630
      	dm_request+0x138/0x230
      	generic_make_request+0xca/0x100
      	submit_bio+0x87/0x110
      	sync_request+0xdd/0x120 [logfs]
      	bdev_readpage+0x2e/0x70 [logfs]
      	do_read_cache_page+0x82/0x180
      	logfs_mount+0x2ad/0x770 [logfs]
      	mount_fs+0x47/0x1c0
      	vfs_kern_mount+0x72/0x110
      	do_kern_mount+0x54/0x110
      	do_mount+0x520/0x7f0
      	sys_mount+0x90/0xe0
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42292Reported-by: default avatarWitold Baryluk <baryluk@smp.if.uj.edu.pl>
      Signed-off-by: default avatarPrasad Joshi <prasadjoshi.linux@gmail.com>
      cd8bfa9c
    • Prasad Joshi's avatar
      logfs: destroy the reserved inodes while unmounting · d2dcd908
      Prasad Joshi authored
      We were assuming that the evict_inode() would never be called on
      reserved inodes. However, (after the commit 8e22c1a4 logfs: get rid
      of magical inodes) while unmounting the file system, in put_super, we
      call iput() on all of the reserved inodes.
      
      The following simple test used to cause a kernel panic on LogFS:
      
      1. Mount a LogFS file system on /mnt
      
      2. Create a file
         $ touch /mnt/a
      
      3. Try to unmount the FS
         $ umount /mnt
      
      The simple fix would be to drop the assumption and properly destroy
      the reserved inodes.
      Signed-off-by: default avatarPrasad Joshi <prasadjoshi.linux@gmail.com>
      d2dcd908
  2. 31 Mar, 2012 38 commits