diff options
Diffstat (limited to 'fs/locks.c')
-rw-r--r-- | fs/locks.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/fs/locks.c b/fs/locks.c index 9a3fe0d8285b..c17bc00b1e8d 100644 --- a/fs/locks.c +++ b/fs/locks.c | |||
@@ -700,13 +700,12 @@ EXPORT_SYMBOL(posix_test_lock); | |||
700 | static int posix_locks_deadlock(struct file_lock *caller_fl, | 700 | static int posix_locks_deadlock(struct file_lock *caller_fl, |
701 | struct file_lock *block_fl) | 701 | struct file_lock *block_fl) |
702 | { | 702 | { |
703 | struct list_head *tmp; | 703 | struct file_lock *fl; |
704 | 704 | ||
705 | next_task: | 705 | next_task: |
706 | if (posix_same_owner(caller_fl, block_fl)) | 706 | if (posix_same_owner(caller_fl, block_fl)) |
707 | return 1; | 707 | return 1; |
708 | list_for_each(tmp, &blocked_list) { | 708 | list_for_each_entry(fl, &blocked_list, fl_link) { |
709 | struct file_lock *fl = list_entry(tmp, struct file_lock, fl_link); | ||
710 | if (posix_same_owner(fl, block_fl)) { | 709 | if (posix_same_owner(fl, block_fl)) { |
711 | fl = fl->fl_next; | 710 | fl = fl->fl_next; |
712 | block_fl = fl; | 711 | block_fl = fl; |
@@ -2164,24 +2163,22 @@ static void move_lock_status(char **p, off_t* pos, off_t offset) | |||
2164 | 2163 | ||
2165 | int get_locks_status(char *buffer, char **start, off_t offset, int length) | 2164 | int get_locks_status(char *buffer, char **start, off_t offset, int length) |
2166 | { | 2165 | { |
2167 | struct list_head *tmp; | 2166 | struct file_lock *fl; |
2168 | char *q = buffer; | 2167 | char *q = buffer; |
2169 | off_t pos = 0; | 2168 | off_t pos = 0; |
2170 | int i = 0; | 2169 | int i = 0; |
2171 | 2170 | ||
2172 | lock_kernel(); | 2171 | lock_kernel(); |
2173 | list_for_each(tmp, &file_lock_list) { | 2172 | list_for_each_entry(fl, &file_lock_list, fl_link) { |
2174 | struct list_head *btmp; | 2173 | struct file_lock *bfl; |
2175 | struct file_lock *fl = list_entry(tmp, struct file_lock, fl_link); | 2174 | |
2176 | lock_get_status(q, fl, ++i, ""); | 2175 | lock_get_status(q, fl, ++i, ""); |
2177 | move_lock_status(&q, &pos, offset); | 2176 | move_lock_status(&q, &pos, offset); |
2178 | 2177 | ||
2179 | if(pos >= offset+length) | 2178 | if(pos >= offset+length) |
2180 | goto done; | 2179 | goto done; |
2181 | 2180 | ||
2182 | list_for_each(btmp, &fl->fl_block) { | 2181 | list_for_each_entry(bfl, &fl->fl_block, fl_block) { |
2183 | struct file_lock *bfl = list_entry(btmp, | ||
2184 | struct file_lock, fl_block); | ||
2185 | lock_get_status(q, bfl, i, " ->"); | 2182 | lock_get_status(q, bfl, i, " ->"); |
2186 | move_lock_status(&q, &pos, offset); | 2183 | move_lock_status(&q, &pos, offset); |
2187 | 2184 | ||