@@
-
320
,
7
+
319
,
7
@@
long
watch_queue_set_filter(struct pipe_inode_info
*
pipe,
tf[i].info_mask & WATCH_INFO_LENGTH)
goto err_filter;
/
*
Ignore
any
unknown types
*
/
-
if
(tf[i].
type
>
=
sizeof(wfilter
-
>type_filter)
*
8
)
+
if
(tf[i].
type
>
=
WATCH_TYPE__NR)
continue
;
nr_filter
+
+
;
}
@@
-
336
,
7
+
335
,
7
@@
long
watch_queue_set_filter(struct pipe_inode_info
*
pipe,
q
=
wfilter
-
>filters;
for
(i
=
0
; i <
filter
.nr_filters; i
+
+
) {
-
if
(tf[i].
type
>
=
sizeof(wfilter
-
>type_filter)
*
BITS_PER_LONG)
+
if
(tf[i].
type
>
=
WATCH_TYPE__NR)
continue
;
q
-
>
type
=
tf[i].
type
;
@@
-
371
,
6
+
370
,
7
@@ static void __put_watch_queue(struct kref
*
kref)
for
(i
=
0
; i < wqueue
-
>nr_pages; i
+
+
)
__free_page(wqueue
-
>notes[i]);
+
bitmap_free(wqueue
-
>notes_bitmap);
wfilter
=
rcu_access_pointer(wqueue
-
>
filter
);
if
(wfilter)
@@
-
566
,
7
+
566
,
7
@@ void watch_queue_clear(struct watch_queue
*
wqueue)
rcu_read_lock();
spin_lock_bh(&wqueue
-
>lock);
-
/
*
Prevent new additions
and
prevent notifications
from
happening
*
/
+
/
*
Prevent new notifications
from
being stored.
*
/
wqueue
-
>defunct
=
true;
while
(!hlist_empty(&wqueue
-
>watches)) {