diff options
| -rw-r--r-- | include/linux/watch_queue.h | 3 | ||||
| -rw-r--r-- | kernel/watch_queue.c | 4 | 
2 files changed, 4 insertions, 3 deletions
diff --git a/include/linux/watch_queue.h b/include/linux/watch_queue.h index c994d1b2cdba..3b9a40ae8bdb 100644 --- a/include/linux/watch_queue.h +++ b/include/linux/watch_queue.h @@ -28,7 +28,8 @@ struct watch_type_filter {  struct watch_filter {  	union {  		struct rcu_head	rcu; -		unsigned long	type_filter[2];	/* Bitmask of accepted types */ +		/* Bitmask of accepted types */ +		DECLARE_BITMAP(type_filter, WATCH_TYPE__NR);  	};  	u32			nr_filters;	/* Number of filters */  	struct watch_type_filter filters[]; diff --git a/kernel/watch_queue.c b/kernel/watch_queue.c index 9c9eb20dd2c5..427b0318e303 100644 --- a/kernel/watch_queue.c +++ b/kernel/watch_queue.c @@ -320,7 +320,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 +336,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;  | 
