Commit Graph
100 Commits
Author SHA1 Message Date
Al Viro 7a163b2195 unify {de,}mangle_poll(), get rid of kernel-side POLL...
except, again, POLLFREE and POLL_BUSY_LOOP.

With this, we finally get to the promised end result:

 - POLL{IN,OUT,...} are plain integers and *not* in __poll_t, so any
   stray instances of ->poll() still using those will be caught by
   sparse.

 - eventpoll.c and select.c warning-free wrt __poll_t

 - no more kernel-side definitions of POLL... - userland ones are
   visible through the entire kernel (and used pretty much only for
   mangle/demangle)

 - same behavior as after the first series (i.e. sparc et.al. epoll(2)
   working correctly).

Signed-off-by: Al Viro <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
2018-02-11 14:37:22 -08:00
Al Viro 7a501609c2 mconsole_proc(): don't mess with file->f_pos
Signed-off-by: Al Viro <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
2018-02-09 19:28:01 -08:00
Al Viro d85e2aa2e3 annotate ep_scan_ready_list()
make it always return __poll_t and have its callbacks do the same

Signed-off-by: Al Viro <[email protected]>
2018-02-01 16:30:06 -05:00
Al Viro d7ebbe46f4 ep_send_events_proc(): return result via esed->res
preparations for not mixing __poll_t and int in ep_scan_ready_list()

Signed-off-by: Al Viro <[email protected]>
2018-02-01 16:29:49 -05:00
Al Viro e78cd95beb preparation to switching ->poll() to returning EPOLL...
Signed-off-by: Al Viro <[email protected]>
2018-02-01 16:29:29 -05:00
Al Viro 65aaf87b3a add EPOLLNVAL, annotate EPOLL... and event_poll->event
Signed-off-by: Al Viro <[email protected]>
2018-02-01 16:28:55 -05:00
Al Viro cfe39442ab use linux/poll.h instead of asm/poll.h
The only place that has any business including asm/poll.h
is linux/poll.h.  Fortunately, asm/poll.h had only been
included in 3 places beyond that one, and all of them
are trivial to switch to using linux/poll.h.

Signed-off-by: Al Viro <[email protected]>
2018-02-01 16:23:11 -05:00
Al Viro 0148a635ce xen: fix poll misannotation
Signed-off-by: Al Viro <[email protected]>
2018-02-01 10:07:32 -05:00
Al Viro 63e2480c86 smc: missing poll annotations
Signed-off-by: Al Viro <[email protected]>
2018-02-01 10:02:53 -05:00
Al Viro 5c59e564e4 kill kernel_sock_ioctl()
no users since 2014

Reviewed-by: Christoph Hellwig <[email protected]>
Signed-off-by: Al Viro <[email protected]>
2018-01-24 19:13:45 -05:00
Al Viro 44c02a2c3d dev_ioctl(): move copyin/copyout to callers
Signed-off-by: Al Viro <[email protected]>
2018-01-24 19:13:45 -05:00
Al Viro 6a88fbe725 ipconfig: use dev_set_mtu()
Signed-off-by: Al Viro <[email protected]>
2018-01-24 19:13:45 -05:00
Al Viro b1b0c24506 lift handling of SIOCIW... out of dev_ioctl()
Signed-off-by: Al Viro <[email protected]>
2018-01-24 19:13:45 -05:00
Al Viro 4cf808e7ac kill dev_ifname32()
same story...

Signed-off-by: Al Viro <[email protected]>
2018-01-24 19:13:45 -05:00
Al Viro f92d4fc953 kill bond_ioctl()
Same story as with dev_ifsioc(), except that the last cases with non-trivial
conversions had been taken out in 2013...

Signed-off-by: Al Viro <[email protected]>
2018-01-24 19:13:45 -05:00
Al Viro bf4405737f kill dev_ifsioc()
Once upon a time net/socket.c:dev_ifsioc() used to handle SIOCSHWTSTAMP and
SIOCSIFMAP.  These have different native and compat layout, so the format
conversion had been needed.  In 2009 these two cases had been taken out,
turning the rest into a convoluted way to calling sock_do_ioctl().  We copy
compat structure into native one, call sock_do_ioctl() on that and copy
the result back for the in/out ioctls.  No layout transformation anywhere,
so we might as well just call sock_do_ioctl() and skip all the headache with
copying.

Signed-off-by: Al Viro <[email protected]>
2018-01-24 19:13:45 -05:00
Al Viro ca25c30040 ip_rt_ioctl(): take copyin to caller
Reviewed-by: Christoph Hellwig <[email protected]>
Signed-off-by: Al Viro <[email protected]>
2018-01-24 19:13:45 -05:00
Al Viro 03aef17bb7 devinet_ioctl(): take copyin/copyout to caller
Reviewed-by: Christoph Hellwig <[email protected]>
Signed-off-by: Al Viro <[email protected]>
2018-01-24 19:13:45 -05:00
Al Viro 36fd633ec9 net: separate SIOCGIFCONF handling from dev_ioctl()
Only two of dev_ioctl() callers may pass SIOCGIFCONF to it.
Separating that codepath from the rest of dev_ioctl() allows both
to simplify dev_ioctl() itself (all other cases work with struct ifreq *)
*and* seriously simplify the compat side of that beast: all it takes
is passing to inet_gifconf() an extra argument - the size of individual
records (sizeof(struct ifreq) or sizeof(struct compat_ifreq)).  With
dev_ifconf() called directly from sock_do_ioctl()/compat_dev_ifconf()
that's easy to arrange.

As the result, compat side of SIOCGIFCONF doesn't need any
allocations, copy_in_user() back and forth, etc.

Reviewed-by: Christoph Hellwig <[email protected]>
Signed-off-by: Al Viro <[email protected]>
2018-01-24 19:13:45 -05:00
Al Viro c981f254cc sctp: use vmemdup_user() rather than badly open-coding memdup_user()
Signed-off-by: Al Viro <[email protected]>
2018-01-19 22:35:58 -05:00
Al Viro 59aeaf3fef snd_ctl_elem_init_enum_names(): switch to vmemdup_user()
Signed-off-by: Al Viro <[email protected]>
2018-01-19 22:35:58 -05:00
Al Viro 88a890375f replace_user_tlv(): switch to vmemdup_user()
Signed-off-by: Al Viro <[email protected]>
2018-01-19 22:35:36 -05:00
Al Viro b713da69e4 signal: unify compat_siginfo_t
--EWB Added #ifdef CONFIG_X86_X32_ABI to arch/x86/kernel/signal_compat.c
      Changed #ifdef CONFIG_X86_X32 to #ifdef CONFIG_X86_X32_ABI in
      linux/compat.h

      CONFIG_X86_X32 is set when the user requests X32 support.

      CONFIG_X86_X32_ABI is set when the user requests X32 support
      and the tool-chain has X32 allowing X32 support to be built.

Signed-off-by: Al Viro <[email protected]>
Signed-off-by: Eric W. Biederman <[email protected]>
2018-01-15 17:40:31 -06:00
Al Viro 4795477b23 signal: kill __ARCH_SI_UID_T
it's always __kernel_uid32_t

Signed-off-by: Al Viro <[email protected]>
Signed-off-by: Eric W. Biederman <[email protected]>
2018-01-12 14:34:49 -06:00
Al Viro 09d1415d24 signal/mips: switch mips to generic siginfo
... having taught the latter that si_errno and si_code might be
swapped.

Signed-off-by: Al Viro <[email protected]>
Signed-off-by: Eric W. Biederman <[email protected]>
2018-01-12 14:34:48 -06:00
Al Viro ce4bb04cae Fix a leak in socket(2) when we fail to allocate a file descriptor.
Got broken by "make sock_alloc_file() do sock_release() on failures" -
cleanup after sock_map_fd() failure got pulled all the way into
sock_alloc_file(), but it used to serve the case when sock_map_fd()
failed *before* getting to sock_alloc_file() as well, and that got
lost.  Trivial to fix, fortunately.

Fixes: 8e1611e235 (make sock_alloc_file() do sock_release() on failures)
Reported-by: Dmitry Vyukov <[email protected]>
Signed-off-by: Al Viro <[email protected]>
2018-01-10 18:47:05 -05:00
Al Viro 50fd2f298b new primitive: vmemdup_user()
similar to memdup_user(), but does *not* guarantee that result will
be physically contiguous; use only in cases where that's not a requirement
and free it with kvfree().

Signed-off-by: Al Viro <[email protected]>
2018-01-07 13:06:15 -05:00
Al Viro 6c2c97a24f memdup_user(): switch to GFP_USER
Signed-off-by: Al Viro <[email protected]>
2018-01-07 13:00:27 -05:00
Al Viro 36735a6a2b mqueue: switch to on-demand creation of internal mount
Instead of doing that upon each ipcns creation, we do that the first
time mq_open(2) or mqueue mount is done in an ipcns.  What's more,
doing that allows to get rid of mount_ns() use - we can go with
considerably cheaper mount_nodev(), avoiding the loop over all
mqueue superblock instances; ipcns->mq_mnt is used to locate preexisting
instance in O(1) time instead of O(instances) mount_ns() would've
cost us.

Based upon the version by Giuseppe Scrivano <[email protected]>; I've
added handling of userland mqueue mounts (original had been broken in
that area) and added a switch to mount_nodev().

Signed-off-by: Al Viro <[email protected]>
2018-01-05 11:54:37 -05:00
Al Viro a713fd7f52 tidy do_mq_open() up a bit
Signed-off-by: Al Viro <[email protected]>
2018-01-05 11:54:36 -05:00
Al Viro 9b20d7fc52 mqueue: clean prepare_open() up
Signed-off-by: Al Viro <[email protected]>
2018-01-05 11:54:36 -05:00
Al Viro 066cc813e9 do_mq_open(): move all work prior to dentry_open() into a helper
Signed-off-by: Al Viro <[email protected]>
2018-01-05 11:54:35 -05:00
Al Viro 05c1b29038 mqueue: fold mq_attr_ok() into mqueue_get_inode()
Signed-off-by: Al Viro <[email protected]>
2018-01-05 11:54:35 -05:00
Al Viro af4a5372e4 move dentry_open() calls up into do_mq_open()
Signed-off-by: Al Viro <[email protected]>
2018-01-05 11:54:34 -05:00
Al Viro eecec19d9e mqueue: switch to vfs_mkobj(), quit abusing ->d_fsdata
Signed-off-by: Al Viro <[email protected]>
2018-01-05 11:54:33 -05:00
Al Viro a4a0683fd5 bpf_obj_do_pin(): switch to vfs_mkobj(), quit abusing ->mknod()
Signed-off-by: Al Viro <[email protected]>
2018-01-05 11:54:33 -05:00
Al Viro 8e6c848ece new primitive: vfs_mkobj()
Similar to vfs_create(), but with caller-supplied callback (and
argument for it) to be used instead of ->create().

Signed-off-by: Al Viro <[email protected]>
2018-01-05 11:53:07 -05:00
Al Viro 040ee69226 fix "netfilter: xt_bpf: Fix XT_BPF_MODE_FD_PINNED mode of 'xt_bpf_info_v1'"
Descriptor table is a shared object; it's not a place where you can
stick temporary references to files, especially when we don't need
an opened file at all.

Cc: [email protected] # v4.14
Fixes: 98589a0998 ("netfilter: xt_bpf: Fix XT_BPF_MODE_FD_PINNED mode of 'xt_bpf_info_v1'")
Signed-off-by: Al Viro <[email protected]>
2018-01-05 11:43:39 -05:00
Al Viro 6db620012f nfs4file: get rid of pointless include of btrfs.h
should've been killed by "vfs: pull btrfs clone API to vfs layer"...

Signed-off-by: Al Viro <[email protected]>
2017-12-30 00:03:39 -05:00
Al Viro 18e2ea5cd0 uvc_v4l2: clean copyin/copyout up
Signed-off-by: Al Viro <[email protected]>
2017-12-29 16:32:56 -05:00
Al Viro 14544d7690 vme_user: don't use __copy_..._user()
Saving access_ok() is not worth the trouble; yes, the callers of ->read()
and ->write() will have done the right checks, but it's much too long
(and varied) call chains to rely upon.

Signed-off-by: Al Viro <[email protected]>
2017-12-29 16:12:28 -05:00
Al Viro 3d46d7108d usx2y: don't bother with memdup_user() for 16-byte structure
... when it can bloody well go into a local variable.

Signed-off-by: Al Viro <[email protected]>
2017-12-28 17:22:51 -05:00
Al Viro 446bd647ce snd_hwdep_dsp_load(): don't bother with access_ok()
the only remaining instance of ->dsp_load() doesn't need it.

Signed-off-by: Al Viro <[email protected]>
2017-12-28 16:30:22 -05:00
Al Viro fc1c428eb4 usx2y: don't bother with access_ok() in ->dsp_load()
memdup_user() checks it, so the only effect would be failing with
-EINVAL instead of -EFAULT in case when access_ok() is false.
However, the caller has already checked access_ok() itself (and
would have buggered off with -EFAULT), so the check is completely
pointless.  Removing it both simplifies the only instance
of ->dsp_load() and allows to get rid of the check in caller -
its sole effect used to be in preventing a bogus error value
from access_ok() in the instance.  Let memdup_user() do the
right thing instead...

Signed-off-by: Al Viro <[email protected]>
2017-12-28 14:43:06 -05:00
Al Viro 3d26759c09 r128: don't open-code memdup_user()
Signed-off-by: Al Viro <[email protected]>
2017-12-27 19:00:09 -05:00
Al Viro 9ee332d99e sget(): handle failures of register_shrinker()
Signed-off-by: Al Viro <[email protected]>
2017-12-18 15:05:07 -05:00
Al Viro 00b0c9b826 Add primitives for manipulating bitfields both in host- and fixed-endian.
The following primitives are defined in linux/bitfield.h:

* u32 le32_get_bits(__le32 val, u32 field) extracts the contents of the
  bitfield specified by @field in little-endian 32bit object @val and
  converts it to host-endian.

* void le32p_replace_bits(__le32 *p, u32 v, u32 field) replaces
  the contents of the bitfield specified by @field in little-endian
  32bit object pointed to by @p with the value of @v.  New value is
  given in host-endian and stored as little-endian.

* __le32 le32_replace_bits(__le32 old, u32 v, u32 field) is equivalent to
  ({__le32 tmp = old; le32p_replace_bits(&tmp, v, field); tmp;})
  In other words, instead of modifying an object in memory, it takes
  the initial value and returns the modified one.

* __le32 le32_encode_bits(u32 v, u32 field) is equivalent to
  le32_replace_bits(0, v, field).  In other words, it returns a little-endian
  32bit object with the bitfield specified by @field containing the
  value of @v and all bits outside that bitfield being zero.

Such set of helpers is defined for each of little-, big- and host-endian
types; e.g. u64_get_bits(val, field) will return the contents of the bitfield
specified by @field in host-endian 64bit object @val, etc.  Of course, for
host-endian no conversion is involved.

Fields to access are specified as GENMASK() values - an N-bit field
starting at bit #M is encoded as GENMASK(M + N - 1, M).  Note that
bit numbers refer to endianness of the object we are working with -
e.g. GENMASK(11, 0) in __be16 refers to the second byte and the lower
4 bits of the first byte.  In __le16 it would refer to the first byte
and the lower 4 bits of the second byte, etc.

Field specification must be a constant; __builtin_constant_p() doesn't
have to be true for it, but compiler must be able to evaluate it at
build time.  If it cannot or if the value does not encode any bitfield,
the build will fail.

If the value being stored in a bitfield is a constant that does not fit
into that bitfield, a warning will be generated at compile time.

Signed-off-by: Al Viro <[email protected]>
2017-12-17 12:36:01 -05:00
Al Viro 8e1611e235 make sock_alloc_file() do sock_release() on failures
This changes calling conventions (and simplifies the hell out
the callers).  New rules: once struct socket had been passed
to sock_alloc_file(), it's been consumed either by struct file
or by sock_release() done by sock_alloc_file().  Either way
the caller should not do sock_release() after that point.

Reviewed-by: Eric Dumazet <[email protected]>
Signed-off-by: Al Viro <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
2017-12-05 18:39:29 -05:00
Al Viro 016a266bdf socketpair(): allocate descriptors first
simplifies failure exits considerably...

Reviewed-by: Eric Dumazet <[email protected]>
Signed-off-by: Al Viro <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
2017-12-05 18:39:28 -05:00
Al Viro a5739435b5 fix kcm_clone()
1) it's fput() or sock_release(), not both
2) don't do fd_install() until the last failure exit.
3) not a bug per se, but... don't attach socket to struct file
   until it's set up.

Take reserving descriptor into the caller, move fd_install() to the
caller, sanitize failure exits and calling conventions.

Cc: [email protected] # v4.6+
Acked-by: Tom Herbert <[email protected]>
Signed-off-by: Al Viro <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
2017-12-05 18:39:28 -05:00
Al Viro d6b4dcf5c5 fs/file.c: trim includes
Signed-off-by: Al Viro <[email protected]>
2017-12-05 09:41:03 -05:00
Al Viro ca0168e8a7 alloc_super(): do ->s_umount initialization earlier
... so that failure exits could count on it having been
done.

Signed-off-by: Al Viro <[email protected]>
2017-12-05 09:32:25 -05:00
Al Viro c68070d040 asm-prototypes.h: use linux/uaccess.h, not asm/uaccess.h
Signed-off-by: Al Viro <[email protected]>
2017-12-04 18:03:39 -05:00
Al Viro 5e454b5457 riscv: use linux/uaccess.h, not asm/uaccess.h...
Signed-off-by: Al Viro <[email protected]>
2017-12-04 18:01:01 -05:00
Al Viro 5bb866de17 ppc: for put_user() pull linux/uaccess.h, not asm/uaccess.h
Signed-off-by: Al Viro <[email protected]>
2017-12-04 14:43:20 -05:00
Al Viro ce53053ce3 kvm: switch get_user_page_nowait() to get_user_pages_unlocked()
... and fold into the sole caller, unifying async and non-async cases

Signed-off-by: Al Viro <[email protected]>
2017-12-04 13:35:21 -05:00
Al Viro d103808441 vmci: the same on the send side...
Signed-off-by: Al Viro <[email protected]>
2017-12-02 21:24:03 -05:00
Al Viro 53f58d8ed8 vmci: simplify qp_dequeue_locked()
* no need for callback argument - it's always the same one
* fold __qp_memcpy_from_queue() into its only caller, get rid of dead code
* pass struct iov_iter * without casting to void *
* don't pass buf_size at all - it's always iov_iter_count(to)

Signed-off-by: Al Viro <[email protected]>
2017-12-02 21:24:03 -05:00
Al Viro ce3d6e7d42 vmci: get rid of qp_memcpy_from_queue()
switch both of its users to qp_memcpy_from_queue_iov() - just
make it take iov_iter * instead of msghdr * and arrange for a
iov_iter for it in all cases.

Signed-off-by: Al Viro <[email protected]>
2017-12-02 21:24:02 -05:00
Al Viro 19c5b89d8d vmci: fix buf_size in case of iovec-based accesses
Both qp_dequeue_locked() and qp_enqueue_locked() use the
buf_size argument to decide how much would be there to copy;
in case of iovec- (== msghdr-)based primitives it's not
iov_size, it's msg_data_left(msg).

Signed-off-by: Al Viro <[email protected]>
2017-12-02 21:24:01 -05:00
Al Viro bc4802736d tipc: switch to sock_recvmsg()
Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:38:10 -05:00
Al Viro d63d271ce2 smc: switch to sock_recvmsg()
Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:38:09 -05:00
Al Viro 7edffd25be ipvs: switch to sock_recvmsg()
Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:38:08 -05:00
Al Viro 956a27ecfa mISDN: switch to sock_recvmsg()
here we do need to reinitialize ->msg_iter on each call - the
data in buffer is overwritten every time, not appended to.

Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:38:07 -05:00
Al Viro f7765c3646 drbd: switch to sock_recvmsg()
Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:38:06 -05:00
Al Viro 985832267d lustre lnet_sock_read(): switch to sock_recvmsg()
... and don't bother reinitializing msg.msg_iter

Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:38:05 -05:00
Al Viro e749d4facf cfs2: switch to sock_recvmsg()
Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:38:04 -05:00
Al Viro 872f8408a7 ncpfs: switch to sock_recvmsg()
Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:37:54 -05:00
Al Viro c8c7840ea9 dlm: switch to sock_recvmsg()
Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:37:47 -05:00
Al Viro 1e4ed1b7ae svc_recvfrom(): switch to sock_recvmsg()
Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:37:40 -05:00
Al Viro e716712f83 __get_user_pages_locked(): get rid of notify_drop argument
The only caller that doesn't pass true in it is get_user_pages() and
it passes NULL in locked.  The only place where we check it is
	if (notify_locked && lock_dropped && *locked)
and lock_dropped can become true only if we have locked != NULL.
In other words, the second part of condition will be false when
called by get_user_pages().

Just get rid of the argument and turn the condition into
	if (lock_dropped && *locked)

Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:29:13 -05:00
Al Viro 14cb138d7c get_user_pages_unlocked(): pass true to __get_user_pages_locked() notify_drop
Equivalent transformation - the only place in __get_user_pages_locked()
where we look at notify_drop argument is
	if (notify_drop && lock_dropped && *locked) {
		up_read(&mm->mmap_sem);
		*locked = 0;
	}
in the very end.  Changing notify_drop from false to true won't change
behaviour unless *locked is non-zero.  The caller is
        ret = __get_user_pages_locked(current, mm, start, nr_pages, pages, NULL,
			      &locked, false, gup_flags | FOLL_TOUCH);
	if (locked)
		up_read(&mm->mmap_sem);
so in that case the original kernel would have done up_read() right after
return from __get_user_pages_locked(), while the modified one would've done
it right before the return.

Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:29:12 -05:00
Al Viro 9a949e8ff9 cris: switch to get_user_pages_fast()
no point holding ->mmap_sem over both calls.

Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:29:12 -05:00
Al Viro c803c9c6c9 fold __get_user_pages_unlocked() into its sole remaining caller
Signed-off-by: Al Viro <[email protected]>
2017-12-02 20:29:11 -05:00
Al Viro c71d227fc4 make kernel-side POLL... arch-independent
mangle/demangle on the way to/from userland

Signed-off-by: Al Viro <[email protected]>
2017-11-29 19:00:41 -05:00
Al Viro 69112736e2 eventpoll: no need to mask the result of epi_item_poll() again
two callers that do so don't need to bother - we'd already
masked it with epi->event.events, which
	* couldn't have changed since we are holding ->mtx
	* had been set to event->events
	* is still equal to event->events, since *event is never
changed by anything.

Signed-off-by: Al Viro <[email protected]>
2017-11-28 19:56:15 -05:00
Al Viro bec1a502d3 eventpoll: constify struct epoll_event pointers
Signed-off-by: Al Viro <[email protected]>
2017-11-28 19:43:33 -05:00
Al Viro fcc5a652a5 debugging printk in sg_poll() uses %x to print POLL... bitmap
Signed-off-by: Al Viro <[email protected]>
2017-11-28 11:07:14 -05:00
Al Viro fb3679372b annotate poll(2) guts
struct pollfd contains two 16bit fields (mask and result) that encode
the POLL... bitmaps.

Signed-off-by: Al Viro <[email protected]>
2017-11-28 11:07:13 -05:00
Al Viro 7594bf37ae 9p: untangle ->poll() mess
First of all, NULL ->poll() means "always POLLIN, always POLLOUT", not an error.
Furthermore, mixing -EREMOTEIO with POLL... masks and expecting it to do anything
good is insane - both are arch-dependent, to start with.  Pass a pointer to
store the error value separately and make it return POLLERR in such case.

And ->poll() calling conventions do *not* include "return -Esomething".  Never
had.

Signed-off-by: Al Viro <[email protected]>
2017-11-28 11:07:13 -05:00
Al Viro 5dc533c66b ->si_band gets POLL... bitmap stored into a user-visible long field
Signed-off-by: Al Viro <[email protected]>
2017-11-28 11:07:12 -05:00
Al Viro ecf927000c ring_buffer_poll_wait() return value used as return value of ->poll()
Signed-off-by: Al Viro <[email protected]>
2017-11-28 11:07:12 -05:00
Al Viro afc9a42b74 the rest of drivers/*: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-28 11:06:58 -05:00
Al Viro c23e0cb81e media: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:20:06 -05:00
Al Viro 076ccb76e1 fs: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:20:05 -05:00
Al Viro 9dd957485d ipc, kernel, mm: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:20:05 -05:00
Al Viro ade994f4f6 net: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:20:04 -05:00
Al Viro e6c5a7d997 apparmor: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:20:04 -05:00
Al Viro c0d4be289e tomoyo: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:20:03 -05:00
Al Viro 680ef72abd sound: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:20:02 -05:00
Al Viro 0d9b87f3ba acpi: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:20:02 -05:00
Al Viro 38544bfff2 crypto: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:20:01 -05:00
Al Viro 1771e70a2e block: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:20:00 -05:00
Al Viro b146e2ce80 x86: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:20:00 -05:00
Al Viro 76d2d4a11b um: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:19:59 -05:00
Al Viro 8153a5ead0 ppc: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:19:59 -05:00
Al Viro 8b9aab09aa mips: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:19:58 -05:00
Al Viro e720f32fce ia64: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:19:58 -05:00
Al Viro 87c1c09358 cris: annotate ->poll() instances
Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:19:57 -05:00
Al Viro 01e5d55629 dmabuf: annotate dma_buf->active
Contains POLL... bitmaps

Signed-off-by: Al Viro <[email protected]>
2017-11-27 16:19:56 -05:00