Messages in this thread | | | Date | Mon, 29 Jul 2013 11:48:32 +0400 | Subject | Re: [PATCH] btrfs: use list_for_each_entry_safe() when delete items | From | Azat Khuzhin <> |
| |
On Sat, Jul 27, 2013 at 2:12 PM, Azat Khuzhin <a3at.mail@gmail.com> wrote: > Replace list_for_each_entry() by list_for_each_entry_safe() in > __btrfs_close_devices() > > There is another place that delete items lock_stripe_add(), but there we > don't need safe version, because after deleting we exit from loop. > > Signed-off-by: Azat Khuzhin <a3at.mail@gmail.com> > --- > fs/btrfs/volumes.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c > index 78b8717..1d1b595 100644 > --- a/fs/btrfs/volumes.c > +++ b/fs/btrfs/volumes.c > @@ -616,13 +616,13 @@ static void free_device(struct rcu_head *head) > > static int __btrfs_close_devices(struct btrfs_fs_devices *fs_devices) > { > - struct btrfs_device *device; > + struct btrfs_device *device, *next; > > if (--fs_devices->opened > 0) > return 0; > > mutex_lock(&fs_devices->device_list_mutex); > - list_for_each_entry(device, &fs_devices->devices, dev_list) { > + list_for_each_entry_safe(device, next, &fs_devices->devices, dev_list) { > struct btrfs_device *new_device; > struct rcu_string *name;
There is "kfree(device);" at the end of loop, maybe there must "goto again;" after it? (instead of this patch)
> > -- > 1.7.10.4 >
-- Respectfully Azat Khuzhin
| |