Messages in this thread | | | Date | Fri, 03 Jul 2009 16:47:00 +0200 | From | Milan Broz <> | Subject | Re: Linux 2.6.27.26 |
| |
Arkadiusz Miskiewicz wrote: > On Friday 03 of July 2009, Greg KH wrote: > > Isn't this part broken?
yes, this part is broken, patch is misapplied to wrong function... it applies only for for dm_get_from_kobject(), not dm_blk_open()
The patch
4d89b7b4e4726893453d0fb4ddbb5b3e16353994 Do not process sysfs attributes when device is being destroyed.
is not needed for 2.6.27 (dm sysfs attributes are not there yet)
Milan
> > The code in 2.6.27 already has such thing and new code is trying to return > NULL even if function returns int > > static int dm_blk_open(struct inode *inode, struct file *file) > { > struct mapped_device *md; > > spin_lock(&_minor_lock); > > md = inode->i_bdev->bd_disk->private_data; > if (!md) > goto out; > > if (test_bit(DMF_FREEING, &md->flags) || > test_bit(DMF_DELETING, &md->flags)) { > md = NULL; > goto out; > } > > dm_get(md); > atomic_inc(&md->open_count); > > out: > spin_unlock(&_minor_lock); > > return md ? 0 : -ENXIO; > } > > >> diff --git a/drivers/md/dm.c b/drivers/md/dm.c >> index ace998c..925efaf 100644 >> --- a/drivers/md/dm.c >> +++ b/drivers/md/dm.c >> @@ -265,6 +265,10 @@ static int dm_blk_open(struct inode *inode, struct >> file *file) goto out; >> } >> >> + if (test_bit(DMF_FREEING, &md->flags) || >> + test_bit(DMF_DELETING, &md->flags)) >> + return NULL; >> + >> dm_get(md); >> atomic_inc(&md->open_count); >> > >
| |