merged On Sat, Mar 17, 2012 at 5:10 AM, Jeff Layton <jlayton@xxxxxxxxxx> wrote: > On Sat, 17 Mar 2012 09:46:55 +0300 > Pavel Shilovsky <piastry@xxxxxxxxxxx> wrote: > >> Signed-off-by: Pavel Shilovsky <piastry@xxxxxxxxxxx> >> --- >> fs/cifs/file.c | 19 ++++++++++--------- >> 1 files changed, 10 insertions(+), 9 deletions(-) >> >> diff --git a/fs/cifs/file.c b/fs/cifs/file.c >> index 4aa6080..159fcc5 100644 >> --- a/fs/cifs/file.c >> +++ b/fs/cifs/file.c >> @@ -960,9 +960,9 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile) >> INIT_LIST_HEAD(&locks_to_send); >> >> /* >> - * Allocating count locks is enough because no locks can be added to >> - * the list while we are holding cinode->lock_mutex that protects >> - * locking operations of this inode. >> + * Allocating count locks is enough because no FL_POSIX locks can be >> + * added to the list while we are holding cinode->lock_mutex that >> + * protects locking operations of this inode. >> */ >> for (; i < count; i++) { >> lck = kmalloc(sizeof(struct lock_to_push), GFP_KERNEL); >> @@ -973,18 +973,20 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile) >> list_add_tail(&lck->llist, &locks_to_send); >> } >> >> - i = 0; >> el = locks_to_send.next; >> lock_flocks(); >> cifs_for_each_lock(cfile->dentry->d_inode, before) { >> + flock = *before; >> + if ((flock->fl_flags & FL_POSIX) == 0) >> + continue; >> if (el == &locks_to_send) { > > Nit: a clearer way to do this would be to list_del the locks as you use > them, and then check for list_empty(&locks_to_send). This works too, > but is not as self documenting. It's not a big deal though... > >> - /* something is really wrong */ >> + /* >> + * The list ended. We don't have enough allocated >> + * structures - something is really wrong. >> + */ >> cERROR(1, "Can't push all brlocks!"); >> break; >> } >> - flock = *before; >> - if ((flock->fl_flags & FL_POSIX) == 0) >> - continue; >> length = 1 + flock->fl_end - flock->fl_start; >> if (flock->fl_type == F_RDLCK || flock->fl_type == F_SHLCK) >> type = CIFS_RDLCK; >> @@ -996,7 +998,6 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile) >> lck->length = length; >> lck->type = type; >> lck->offset = flock->fl_start; >> - i++; >> el = el->next; >> } >> unlock_flocks(); > > > Reviewed-by: Jeff Layton <jlayton@xxxxxxxxxx> > > ...you might also want to add: > > Reported-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx> > -- > To unsubscribe from this list: send the line "unsubscribe linux-cifs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Thanks, Steve -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html