Prev: power: Rename get_current to fix build failure / name conflict
Next: [2.6.35-rc3] reboot mutex 'bug'...
From: Christoph Hellwig on 14 Jun 2010 11:20 On Thu, Jun 10, 2010 at 05:19:50PM +1000, Dave Chinner wrote: > Return -EINVAL when the filesystem is already unfrozen to avoid this > problem. This includes some additional changes in addition to the description, and at least one of them seems incorrect. > - error = 0; > - if (--bdev->bd_fsfreeze_count > 0) > + if (!sb) > goto out; > > - if (!sb) > + error = 0; > + if (--bdev->bd_fsfreeze_count > 0) > goto out; Here you reorder the sb check to be before the counter decrement. But we do support calling freeze_bdev on a device without a superblock, and you would leak bd_fsfreeze_count for that case and wrongly return -EINVAL on unthaw for these now. > error = thaw_super(sb); > - if (error) { > + if (error) > bdev->bd_fsfreeze_count++; > - mutex_unlock(&bdev->bd_fsfreeze_mutex); > - return error; > - } Ok, useful cleanup. > out: > mutex_unlock(&bdev->bd_fsfreeze_mutex); > - return 0; > + return error; And this is the actual fix of course, also looks good. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Dave Chinner on 14 Jun 2010 19:30
On Mon, Jun 14, 2010 at 11:18:15AM -0400, Christoph Hellwig wrote: > On Thu, Jun 10, 2010 at 05:19:50PM +1000, Dave Chinner wrote: > > Return -EINVAL when the filesystem is already unfrozen to avoid this > > problem. > > > This includes some additional changes in addition to the description, > and at least one of them seems incorrect. > > > - error = 0; > > - if (--bdev->bd_fsfreeze_count > 0) > > + if (!sb) > > goto out; > > > > - if (!sb) > > + error = 0; > > + if (--bdev->bd_fsfreeze_count > 0) > > goto out; > > Here you reorder the sb check to be before the counter decrement. But > we do support calling freeze_bdev on a device without a superblock, and > you would leak bd_fsfreeze_count for that case and wrongly return > -EINVAL on unthaw for these now. Ok, will fix it. Cheers, Dave. -- Dave Chinner david(a)fromorbit.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |