[even more tentative] don't pull uaccess.h into poll.h

It's only used for indirect include purposes there.
Lift into those users that do need it.  And yes, it's
almost certainly going to need testing and adjustments.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
diff --git a/drivers/char/ipmi/ipmi_devintf.c b/drivers/char/ipmi/ipmi_devintf.c
index efcd92a..c50472e8 100644
--- a/drivers/char/ipmi/ipmi_devintf.c
+++ b/drivers/char/ipmi/ipmi_devintf.c
@@ -43,6 +43,7 @@
 #include <linux/init.h>
 #include <linux/device.h>
 #include <linux/compat.h>
+#include <linux/uaccess.h>
 
 struct ipmi_file_private
 {
diff --git a/drivers/hid/hid-roccat.c b/drivers/hid/hid-roccat.c
index 3365837..26c6970 100644
--- a/drivers/hid/hid-roccat.c
+++ b/drivers/hid/hid-roccat.c
@@ -27,6 +27,7 @@
 #include <linux/poll.h>
 #include <linux/sched.h>
 #include <linux/hid-roccat.h>
+#include <linux/uaccess.h>
 #include <linux/module.h>
 
 #define ROCCAT_FIRST_MINOR 0
diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c
index 2170d8b..335cb82 100644
--- a/drivers/hid/hidraw.c
+++ b/drivers/hid/hidraw.c
@@ -34,6 +34,7 @@
 #include <linux/hid.h>
 #include <linux/mutex.h>
 #include <linux/sched.h>
+#include <linux/uaccess.h>
 
 #include <linux/hidraw.h>
 
diff --git a/drivers/hid/uhid.c b/drivers/hid/uhid.c
index c4a2bb8..7f11a7b 100644
--- a/drivers/hid/uhid.c
+++ b/drivers/hid/uhid.c
@@ -24,6 +24,7 @@
 #include <linux/spinlock.h>
 #include <linux/uhid.h>
 #include <linux/wait.h>
+#include <linux/uaccess.h>
 
 #define UHID_NAME	"uhid"
 #define UHID_BUFSIZE	32
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index 208358f..91b19ea 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -31,6 +31,7 @@
 #include <linux/iio/sysfs.h>
 #include <linux/iio/events.h>
 #include <linux/iio/buffer.h>
+#include <linux/uaccess.h>
 
 /* IDA to assign each registered device a unique id */
 static DEFINE_IDA(iio_ida);
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
index 7901f45..ddfcc265 100644
--- a/drivers/input/evdev.c
+++ b/drivers/input/evdev.c
@@ -26,6 +26,7 @@
 #include <linux/major.h>
 #include <linux/device.h>
 #include <linux/cdev.h>
+#include <linux/uaccess.h>
 #include "input-compat.h"
 
 enum evdev_clock_type {
diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c
index aabd34f..269a176 100644
--- a/drivers/input/joydev.c
+++ b/drivers/input/joydev.c
@@ -28,6 +28,7 @@
 #include <linux/init.h>
 #include <linux/device.h>
 #include <linux/cdev.h>
+#include <linux/uaccess.h>
 
 MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
 MODULE_DESCRIPTION("Joystick device interfaces");
diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c
index 34c2b52..7d153f4 100644
--- a/drivers/input/misc/uinput.c
+++ b/drivers/input/misc/uinput.c
@@ -38,6 +38,7 @@
 #include <linux/init.h>
 #include <linux/fs.h>
 #include <linux/miscdevice.h>
+#include <linux/uaccess.h>
 #include <linux/uinput.h>
 #include <linux/input/mt.h>
 #include "../input-compat.h"
diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c
index b8a2d24..a5c6091 100644
--- a/drivers/input/mousedev.c
+++ b/drivers/input/mousedev.c
@@ -26,6 +26,7 @@
 #include <linux/device.h>
 #include <linux/cdev.h>
 #include <linux/kernel.h>
+#include <linux/uaccess.h>
 
 MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
 MODULE_DESCRIPTION("Mouse (ExplorerPS/2) device interfaces");
diff --git a/drivers/media/dvb-core/dvb_ca_en50221.c b/drivers/media/dvb-core/dvb_ca_en50221.c
index b8f36f0..fad42ee 100644
--- a/drivers/media/dvb-core/dvb_ca_en50221.c
+++ b/drivers/media/dvb-core/dvb_ca_en50221.c
@@ -37,6 +37,7 @@
 #include <linux/spinlock.h>
 #include <linux/sched.h>
 #include <linux/kthread.h>
+#include <linux/uaccess.h>
 
 #include "dvb_ca_en50221.h"
 #include "dvb_ringbuffer.h"
diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c
index c22f3e5..7c4e995 100644
--- a/drivers/media/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb-core/dvb_frontend.c
@@ -41,6 +41,7 @@
 #include <linux/jiffies.h>
 #include <linux/kthread.h>
 #include <linux/ktime.h>
+#include <linux/uaccess.h>
 #include <asm/processor.h>
 
 #include "dvb_frontend.h"
diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
index 13bb57f..631b869 100644
--- a/drivers/media/dvb-core/dvbdev.c
+++ b/drivers/media/dvb-core/dvbdev.c
@@ -32,6 +32,7 @@
 #include <linux/fs.h>
 #include <linux/cdev.h>
 #include <linux/mutex.h>
+#include <linux/uaccess.h>
 #include "dvbdev.h"
 
 static DEFINE_MUTEX(dvbdev_mutex);
diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c
index 7b39440..b158427 100644
--- a/drivers/media/media-device.c
+++ b/drivers/media/media-device.c
@@ -25,6 +25,7 @@
 #include <linux/ioctl.h>
 #include <linux/media.h>
 #include <linux/types.h>
+#include <linux/uaccess.h>
 
 #include <media/media-device.h>
 #include <media/media-devnode.h>
diff --git a/drivers/media/pci/solo6x10/solo6x10-g723.c b/drivers/media/pci/solo6x10/solo6x10-g723.c
index 4a37a1c..abca3a2 100644
--- a/drivers/media/pci/solo6x10/solo6x10-g723.c
+++ b/drivers/media/pci/solo6x10/solo6x10-g723.c
@@ -25,6 +25,7 @@
 #include <linux/freezer.h>
 #include <linux/module.h>
 #include <linux/slab.h>
+#include <linux/uaccess.h>
 
 #include <sound/core.h>
 #include <sound/initval.h>
diff --git a/drivers/media/pci/zoran/zoran_procfs.c b/drivers/media/pci/zoran/zoran_procfs.c
index 4376527..c4059ed 100644
--- a/drivers/media/pci/zoran/zoran_procfs.c
+++ b/drivers/media/pci/zoran/zoran_procfs.c
@@ -43,6 +43,7 @@
 
 #include <linux/ctype.h>
 #include <linux/poll.h>
+#include <linux/uaccess.h>
 #include <asm/io.h>
 
 #include "videocodec.h"
diff --git a/drivers/media/platform/vivid/vivid-osd.c b/drivers/media/platform/vivid/vivid-osd.c
index e15eef6..cf503ccb 100644
--- a/drivers/media/platform/vivid/vivid-osd.c
+++ b/drivers/media/platform/vivid/vivid-osd.c
@@ -29,6 +29,7 @@
 #include <linux/kthread.h>
 #include <linux/freezer.h>
 #include <linux/fb.h>
+#include <linux/uaccess.h>
 #include <media/videobuf2-vmalloc.h>
 #include <media/v4l2-device.h>
 #include <media/v4l2-ioctl.h>
diff --git a/drivers/media/platform/vivid/vivid-radio-rx.c b/drivers/media/platform/vivid/vivid-radio-rx.c
index 2367474..9b64bc6 100644
--- a/drivers/media/platform/vivid/vivid-radio-rx.c
+++ b/drivers/media/platform/vivid/vivid-radio-rx.c
@@ -22,6 +22,7 @@
 #include <linux/delay.h>
 #include <linux/videodev2.h>
 #include <linux/v4l2-dv-timings.h>
+#include <linux/uaccess.h>
 #include <media/v4l2-common.h>
 #include <media/v4l2-event.h>
 #include <media/v4l2-dv-timings.h>
diff --git a/drivers/media/platform/vivid/vivid-radio-tx.c b/drivers/media/platform/vivid/vivid-radio-tx.c
index 38195ef..36a7782 100644
--- a/drivers/media/platform/vivid/vivid-radio-tx.c
+++ b/drivers/media/platform/vivid/vivid-radio-tx.c
@@ -22,6 +22,7 @@
 #include <linux/delay.h>
 #include <linux/videodev2.h>
 #include <linux/v4l2-dv-timings.h>
+#include <linux/uaccess.h>
 #include <media/v4l2-common.h>
 #include <media/v4l2-event.h>
 #include <media/v4l2-dv-timings.h>
diff --git a/drivers/media/platform/vivid/vivid-vid-cap.c b/drivers/media/platform/vivid/vivid-vid-cap.c
index ef54123..1b6a140 100644
--- a/drivers/media/platform/vivid/vivid-vid-cap.c
+++ b/drivers/media/platform/vivid/vivid-vid-cap.c
@@ -23,6 +23,7 @@
 #include <linux/vmalloc.h>
 #include <linux/videodev2.h>
 #include <linux/v4l2-dv-timings.h>
+#include <linux/uaccess.h>
 #include <media/v4l2-common.h>
 #include <media/v4l2-event.h>
 #include <media/v4l2-dv-timings.h>
diff --git a/drivers/media/platform/vivid/vivid-vid-out.c b/drivers/media/platform/vivid/vivid-vid-out.c
index b77acb6..0410051 100644
--- a/drivers/media/platform/vivid/vivid-vid-out.c
+++ b/drivers/media/platform/vivid/vivid-vid-out.c
@@ -22,6 +22,7 @@
 #include <linux/sched.h>
 #include <linux/videodev2.h>
 #include <linux/v4l2-dv-timings.h>
+#include <linux/uaccess.h>
 #include <media/v4l2-common.h>
 #include <media/v4l2-event.h>
 #include <media/v4l2-dv-timings.h>
diff --git a/drivers/media/radio/si470x/radio-si470x-common.c b/drivers/media/radio/si470x/radio-si470x-common.c
index bc0212e..1931220 100644
--- a/drivers/media/radio/si470x/radio-si470x-common.c
+++ b/drivers/media/radio/si470x/radio-si470x-common.c
@@ -112,6 +112,7 @@
 
 
 /* kernel includes */
+#include <linux/uaccess.h>
 #include "radio-si470x.h"
 
 
diff --git a/drivers/media/rc/ir-lirc-codec.c b/drivers/media/rc/ir-lirc-codec.c
index a32659f..76b703a 100644
--- a/drivers/media/rc/ir-lirc-codec.c
+++ b/drivers/media/rc/ir-lirc-codec.c
@@ -15,6 +15,7 @@
 #include <linux/sched.h>
 #include <linux/wait.h>
 #include <linux/module.h>
+#include <linux/uaccess.h>
 #include <media/lirc.h>
 #include <media/lirc_dev.h>
 #include <media/rc-core.h>
diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c
index 989098f..5281620 100644
--- a/drivers/media/rc/lirc_dev.c
+++ b/drivers/media/rc/lirc_dev.c
@@ -34,6 +34,7 @@
 #include <linux/bitops.h>
 #include <linux/device.h>
 #include <linux/cdev.h>
+#include <linux/uaccess.h>
 
 #include <media/rc-core.h>
 #include <media/lirc.h>
diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
index 327e83a..5d08161 100644
--- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
+++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
@@ -17,6 +17,7 @@
 #include <linux/module.h>
 #include <linux/videodev2.h>
 #include <linux/v4l2-subdev.h>
+#include <linux/uaccess.h>
 #include <media/v4l2-dev.h>
 #include <media/v4l2-ioctl.h>
 
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
index e8ecf95..1ce2a32 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
@@ -21,6 +21,7 @@
 #include <linux/ctype.h>
 #include <linux/slab.h>
 #include <linux/export.h>
+#include <linux/uaccess.h>
 #include <media/v4l2-ioctl.h>
 #include <media/v4l2-device.h>
 #include <media/v4l2-ctrls.h>
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
index 7486af2..f135f1a 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -17,6 +17,7 @@
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/version.h>
+#include <linux/uaccess.h>
 
 #include <linux/videodev2.h>
 
diff --git a/drivers/media/v4l2-core/videobuf2-v4l2.c b/drivers/media/v4l2-core/videobuf2-v4l2.c
index f68522c..7bbc055 100644
--- a/drivers/media/v4l2-core/videobuf2-v4l2.c
+++ b/drivers/media/v4l2-core/videobuf2-v4l2.c
@@ -23,6 +23,7 @@
 #include <linux/sched.h>
 #include <linux/freezer.h>
 #include <linux/kthread.h>
+#include <linux/uaccess.h>
 
 #include <media/v4l2-dev.h>
 #include <media/v4l2-fh.h>
diff --git a/drivers/misc/mic/scif/scif_fd.c b/drivers/misc/mic/scif/scif_fd.c
index 5c2a57a..74d5661 100644
--- a/drivers/misc/mic/scif/scif_fd.c
+++ b/drivers/misc/mic/scif/scif_fd.c
@@ -15,6 +15,7 @@
  * Intel SCIF driver.
  *
  */
+#include <linux/uaccess.h>
 #include "scif_main.h"
 
 static int scif_fdopen(struct inode *inode, struct file *f)
diff --git a/drivers/staging/media/lirc/lirc_zilog.c b/drivers/staging/media/lirc/lirc_zilog.c
index c0729f9..e7cc2bf 100644
--- a/drivers/staging/media/lirc/lirc_zilog.c
+++ b/drivers/staging/media/lirc/lirc_zilog.c
@@ -54,6 +54,7 @@
 #include <linux/i2c.h>
 #include <linux/firmware.h>
 #include <linux/vmalloc.h>
+#include <linux/uaccess.h>
 
 #include <linux/mutex.h>
 #include <linux/kthread.h>
diff --git a/drivers/staging/wilc1000/wilc_debugfs.c b/drivers/staging/wilc1000/wilc_debugfs.c
index ae11186..b4fc64b 100644
--- a/drivers/staging/wilc1000/wilc_debugfs.c
+++ b/drivers/staging/wilc1000/wilc_debugfs.c
@@ -14,6 +14,7 @@
 #include <linux/debugfs.h>
 #include <linux/poll.h>
 #include <linux/sched.h>
+#include <linux/uaccess.h>
 
 #include "wilc_wlan_if.h"
 
diff --git a/fs/signalfd.c b/fs/signalfd.c
index 4d36046..ba0791b 100644
--- a/fs/signalfd.c
+++ b/fs/signalfd.c
@@ -31,6 +31,7 @@
 #include <linux/syscalls.h>
 #include <linux/proc_fs.h>
 #include <linux/compat.h>
+#include <linux/uaccess.h>
 
 void signalfd_cleanup(struct sighand_struct *sighand)
 {
diff --git a/include/linux/poll.h b/include/linux/poll.h
index 176b24a..3a56e68 100644
--- a/include/linux/poll.h
+++ b/include/linux/poll.h
@@ -3,7 +3,6 @@
 
 #include <linux/compiler.h>
 #include <linux/wait.h>
-#include <asm/uaccess.h>
 #include <uapi/linux/poll.h>
 
 #define DEFAULT_POLLMASK (POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM)
diff --git a/kernel/relay.c b/kernel/relay.c
index 08a98d1..eb26b2d 100644
--- a/kernel/relay.c
+++ b/kernel/relay.c
@@ -22,6 +22,7 @@
 #include <linux/mm.h>
 #include <linux/cpu.h>
 #include <linux/splice.h>
+#include <linux/uaccess.h>
 
 /* list of open channels, for cpu hotplug */
 static DEFINE_MUTEX(relay_channels_mutex);
diff --git a/net/rfkill/core.c b/net/rfkill/core.c
index 48fa2bc..5bf5ad2 100644
--- a/net/rfkill/core.c
+++ b/net/rfkill/core.c
@@ -33,6 +33,7 @@
 #include <linux/poll.h>
 #include <linux/fs.h>
 #include <linux/slab.h>
+#include <linux/uaccess.h>
 
 #include "rfkill.h"
 
diff --git a/sound/core/hwdep.c b/sound/core/hwdep.c
index 8c1f00f..e876e61 100644
--- a/sound/core/hwdep.c
+++ b/sound/core/hwdep.c
@@ -25,6 +25,7 @@
 #include <linux/time.h>
 #include <linux/mutex.h>
 #include <linux/module.h>
+#include <linux/uaccess.h>
 #include <sound/core.h>
 #include <sound/control.h>
 #include <sound/minors.h>
diff --git a/sound/core/info.c b/sound/core/info.c
index 2365e32..986eaca 100644
--- a/sound/core/info.c
+++ b/sound/core/info.c
@@ -31,6 +31,7 @@
 #include <linux/utsname.h>
 #include <linux/proc_fs.h>
 #include <linux/mutex.h>
+#include <linux/uaccess.h>
 #include <stdarg.h>
 
 int snd_info_check_reserved_words(const char *str)
diff --git a/sound/core/oss/mixer_oss.c b/sound/core/oss/mixer_oss.c
index 7a8c79d..ae97a21 100644
--- a/sound/core/oss/mixer_oss.c
+++ b/sound/core/oss/mixer_oss.c
@@ -30,6 +30,7 @@
 #include <sound/info.h>
 #include <sound/mixer_oss.h>
 #include <linux/soundcard.h>
+#include <linux/uaccess.h>
 
 #define OSS_ALSAEMULVER         _SIOR ('M', 249, int)
 
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
index 2f37744..49b4f54 100644
--- a/sound/core/oss/pcm_oss.c
+++ b/sound/core/oss/pcm_oss.c
@@ -33,6 +33,7 @@
 #include <linux/module.h>
 #include <linux/math64.h>
 #include <linux/string.h>
+#include <linux/uaccess.h>
 #include <sound/core.h>
 #include <sound/minors.h>
 #include <sound/pcm.h>
diff --git a/sound/core/pcm.c b/sound/core/pcm.c
index 308c9ec..ab50c7e 100644
--- a/sound/core/pcm.c
+++ b/sound/core/pcm.c
@@ -25,6 +25,7 @@
 #include <linux/time.h>
 #include <linux/mutex.h>
 #include <linux/device.h>
+#include <linux/uaccess.h>
 #include <sound/core.h>
 #include <sound/minors.h>
 #include <sound/pcm.h>
diff --git a/sound/pci/lola/lola_mixer.c b/sound/pci/lola/lola_mixer.c
index e7fe15d..44522ceb 100644
--- a/sound/pci/lola/lola_mixer.c
+++ b/sound/pci/lola/lola_mixer.c
@@ -22,6 +22,7 @@
 #include <linux/init.h>
 #include <linux/vmalloc.h>
 #include <linux/io.h>
+#include <linux/uaccess.h>
 #include <sound/core.h>
 #include <sound/control.h>
 #include <sound/pcm.h>