On Fri, 27 Mar 2015 10:34:20 +0800 "Yan, Zheng" <zyan@xxxxxxxxxx> wrote: > locks_delete_lock_ctx() is called inside the loop, so we > should use list_for_each_entry_safe. > > Signed-off-by: Yan, Zheng <zyan@xxxxxxxxxx> > --- > fs/locks.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/fs/locks.c b/fs/locks.c > index 528fedf..40bc384 100644 > --- a/fs/locks.c > +++ b/fs/locks.c > @@ -1388,9 +1388,8 @@ any_leases_conflict(struct inode *inode, struct file_lock *breaker) > int __break_lease(struct inode *inode, unsigned int mode, unsigned int type) > { > int error = 0; > - struct file_lock *new_fl; > struct file_lock_context *ctx = inode->i_flctx; > - struct file_lock *fl; > + struct file_lock *new_fl, *fl, *tmp; > unsigned long break_time; > int want_write = (mode & O_ACCMODE) != O_RDONLY; > LIST_HEAD(dispose); > @@ -1420,7 +1419,7 @@ int __break_lease(struct inode *inode, unsigned int mode, unsigned int type) > break_time++; /* so that 0 means no break time */ > } > > - list_for_each_entry(fl, &ctx->flc_lease, fl_list) { > + list_for_each_entry_safe(fl, tmp, &ctx->flc_lease, fl_list) { > if (!leases_conflict(fl, new_fl)) > continue; > if (want_write) { Well spotted. I'll plan to merge this, give it a bit of testing and send on to Linus next week sometime. Thanks, -- Jeff Layton <jeff.layton@xxxxxxxxxxxxxxx> -- 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