From 4673d6b16ed71042c109f7b37ca6379f720d5630 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 1 May 2014 20:37:18 -0700 Subject: [PATCH] 3.10-stable patches added patches: media-em28xx-fix-pctv-290e-lna-oops.patch media-m88rs2000-add-caps-fe_can_inversion_auto.patch media-m88rs2000-prevent-frontend-crash-on-continuous-transponder-scans.patch media-media-gspca-sn9c20x-add-id-for-genius-look-1320-v2.patch media-omap3isp-preview-fix-the-crop-margins.patch media-saa7134-fix-warn_on-during-resume.patch media-uvcvideo-do-not-use-usb_set_interface-on-bulk-ep.patch media-v4l2-compat-ioctl32-fix-wrong-vidioc_subdev_g-s_edid32-support.patch reiserfs-fix-race-in-readdir.patch usb-dwc3-fix-wrong-bit-mask-in-dwc3_event_devt.patch usb-gadget-tcm_usb_gadget-stop-format-strings.patch usb-gadget-zero-fix-superspeed-enumeration-for-alternate-setting-1.patch usb-xhci-fix-compilation-warning-when-config_pci-config_pm.patch xhci-extend-quirk-for-renesas-cards.patch xhci-prevent-runtime-pm-from-autosuspending-during-initialization.patch --- .../media-em28xx-fix-pctv-290e-lna-oops.patch | 37 ++++++++++ ...s2000-add-caps-fe_can_inversion_auto.patch | 31 ++++++++ ...rash-on-continuous-transponder-scans.patch | 60 +++++++++++++++ ...9c20x-add-id-for-genius-look-1320-v2.patch | 39 ++++++++++ ...map3isp-preview-fix-the-crop-margins.patch | 48 ++++++++++++ ...ia-saa7134-fix-warn_on-during-resume.patch | 38 ++++++++++ ...not-use-usb_set_interface-on-bulk-ep.patch | 71 ++++++++++++++++++ ...ong-vidioc_subdev_g-s_edid32-support.patch | 33 +++++++++ queue-3.10/reiserfs-fix-race-in-readdir.patch | 47 ++++++++++++ queue-3.10/series | 15 ++++ ...ix-wrong-bit-mask-in-dwc3_event_devt.patch | 58 +++++++++++++++ ...t-tcm_usb_gadget-stop-format-strings.patch | 30 ++++++++ ...-enumeration-for-alternate-setting-1.patch | 48 ++++++++++++ ...on-warning-when-config_pci-config_pm.patch | 55 ++++++++++++++ .../xhci-extend-quirk-for-renesas-cards.patch | 47 ++++++++++++ ...autosuspending-during-initialization.patch | 74 +++++++++++++++++++ 16 files changed, 731 insertions(+) create mode 100644 queue-3.10/media-em28xx-fix-pctv-290e-lna-oops.patch create mode 100644 queue-3.10/media-m88rs2000-add-caps-fe_can_inversion_auto.patch create mode 100644 queue-3.10/media-m88rs2000-prevent-frontend-crash-on-continuous-transponder-scans.patch create mode 100644 queue-3.10/media-media-gspca-sn9c20x-add-id-for-genius-look-1320-v2.patch create mode 100644 queue-3.10/media-omap3isp-preview-fix-the-crop-margins.patch create mode 100644 queue-3.10/media-saa7134-fix-warn_on-during-resume.patch create mode 100644 queue-3.10/media-uvcvideo-do-not-use-usb_set_interface-on-bulk-ep.patch create mode 100644 queue-3.10/media-v4l2-compat-ioctl32-fix-wrong-vidioc_subdev_g-s_edid32-support.patch create mode 100644 queue-3.10/reiserfs-fix-race-in-readdir.patch create mode 100644 queue-3.10/usb-dwc3-fix-wrong-bit-mask-in-dwc3_event_devt.patch create mode 100644 queue-3.10/usb-gadget-tcm_usb_gadget-stop-format-strings.patch create mode 100644 queue-3.10/usb-gadget-zero-fix-superspeed-enumeration-for-alternate-setting-1.patch create mode 100644 queue-3.10/usb-xhci-fix-compilation-warning-when-config_pci-config_pm.patch create mode 100644 queue-3.10/xhci-extend-quirk-for-renesas-cards.patch create mode 100644 queue-3.10/xhci-prevent-runtime-pm-from-autosuspending-during-initialization.patch diff --git a/queue-3.10/media-em28xx-fix-pctv-290e-lna-oops.patch b/queue-3.10/media-em28xx-fix-pctv-290e-lna-oops.patch new file mode 100644 index 00000000000..3f7a3bb6c05 --- /dev/null +++ b/queue-3.10/media-em28xx-fix-pctv-290e-lna-oops.patch @@ -0,0 +1,37 @@ +From 3ec40dcfb413214b2874aec858870502b61c2202 Mon Sep 17 00:00:00 2001 +From: Antti Palosaari +Date: Tue, 11 Mar 2014 06:53:16 -0300 +Subject: media: em28xx: fix PCTV 290e LNA oops +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Antti Palosaari + +commit 3ec40dcfb413214b2874aec858870502b61c2202 upstream. + +Pointer to device state has been moved to different location during +some change. PCTV 290e LNA function still uses old pointer, carried +over FE priv, and it crash. + +Reported-by: Janne Kujanpää +Signed-off-by: Antti Palosaari +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/usb/em28xx/em28xx-dvb.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/media/usb/em28xx/em28xx-dvb.c ++++ b/drivers/media/usb/em28xx/em28xx-dvb.c +@@ -673,7 +673,8 @@ static void pctv_520e_init(struct em28xx + static int em28xx_pctv_290e_set_lna(struct dvb_frontend *fe) + { + struct dtv_frontend_properties *c = &fe->dtv_property_cache; +- struct em28xx *dev = fe->dvb->priv; ++ struct em28xx_i2c_bus *i2c_bus = fe->dvb->priv; ++ struct em28xx *dev = i2c_bus->dev; + #ifdef CONFIG_GPIOLIB + struct em28xx_dvb *dvb = dev->dvb; + int ret; diff --git a/queue-3.10/media-m88rs2000-add-caps-fe_can_inversion_auto.patch b/queue-3.10/media-m88rs2000-add-caps-fe_can_inversion_auto.patch new file mode 100644 index 00000000000..a07f58e4d9a --- /dev/null +++ b/queue-3.10/media-m88rs2000-add-caps-fe_can_inversion_auto.patch @@ -0,0 +1,31 @@ +From 3c8023a782964c72574ad8268ba0ea4e2d9772fc Mon Sep 17 00:00:00 2001 +From: Malcolm Priestley +Date: Tue, 25 Feb 2014 23:05:39 -0300 +Subject: media: m88rs2000: add caps FE_CAN_INVERSION_AUTO + +From: Malcolm Priestley + +commit 3c8023a782964c72574ad8268ba0ea4e2d9772fc upstream. + +The m88rs2000 frontend is always auto inversion. + +Signed-off-by: Malcolm Priestley +Signed-off-by: Michael Krufky +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/dvb-frontends/m88rs2000.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/media/dvb-frontends/m88rs2000.c ++++ b/drivers/media/dvb-frontends/m88rs2000.c +@@ -759,7 +759,7 @@ static struct dvb_frontend_ops m88rs2000 + .symbol_rate_tolerance = 500, /* ppm */ + .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | + FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | +- FE_CAN_QPSK | ++ FE_CAN_QPSK | FE_CAN_INVERSION_AUTO | + FE_CAN_FEC_AUTO + }, + diff --git a/queue-3.10/media-m88rs2000-prevent-frontend-crash-on-continuous-transponder-scans.patch b/queue-3.10/media-m88rs2000-prevent-frontend-crash-on-continuous-transponder-scans.patch new file mode 100644 index 00000000000..131dd646303 --- /dev/null +++ b/queue-3.10/media-m88rs2000-prevent-frontend-crash-on-continuous-transponder-scans.patch @@ -0,0 +1,60 @@ +From 8272d0a0c0d374a01721e579df6e8add5577132b Mon Sep 17 00:00:00 2001 +From: Malcolm Priestley +Date: Tue, 25 Feb 2014 23:11:34 -0300 +Subject: media: m88rs2000: prevent frontend crash on continuous transponder scans + +From: Malcolm Priestley + +commit 8272d0a0c0d374a01721e579df6e8add5577132b upstream. + +Add m88rs2000_get_tune_settings, min delay of 2000 ms on symbol +rate more than 3000000 and delay of 3000ms less than this. + +Adding min delay prevents crashing the frontend on continuous +transponder scans. Other dvb_frontend_tune_settings remain as default. + +This makes very little time difference to good channel scans, but slows down +the set frontend where lock can never be achieved i.e. DVB-S2. + +Signed-off-by: Malcolm Priestley +Signed-off-by: Michael Krufky +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/dvb-frontends/m88rs2000.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +--- a/drivers/media/dvb-frontends/m88rs2000.c ++++ b/drivers/media/dvb-frontends/m88rs2000.c +@@ -712,6 +712,22 @@ static int m88rs2000_get_frontend(struct + return 0; + } + ++static int m88rs2000_get_tune_settings(struct dvb_frontend *fe, ++ struct dvb_frontend_tune_settings *tune) ++{ ++ struct dtv_frontend_properties *c = &fe->dtv_property_cache; ++ ++ if (c->symbol_rate > 3000000) ++ tune->min_delay_ms = 2000; ++ else ++ tune->min_delay_ms = 3000; ++ ++ tune->step_size = c->symbol_rate / 16000; ++ tune->max_drift = c->symbol_rate / 2000; ++ ++ return 0; ++} ++ + static int m88rs2000_i2c_gate_ctrl(struct dvb_frontend *fe, int enable) + { + struct m88rs2000_state *state = fe->demodulator_priv; +@@ -763,6 +779,7 @@ static struct dvb_frontend_ops m88rs2000 + + .set_frontend = m88rs2000_set_frontend, + .get_frontend = m88rs2000_get_frontend, ++ .get_tune_settings = m88rs2000_get_tune_settings, + }; + + struct dvb_frontend *m88rs2000_attach(const struct m88rs2000_config *config, diff --git a/queue-3.10/media-media-gspca-sn9c20x-add-id-for-genius-look-1320-v2.patch b/queue-3.10/media-media-gspca-sn9c20x-add-id-for-genius-look-1320-v2.patch new file mode 100644 index 00000000000..87b8732d44b --- /dev/null +++ b/queue-3.10/media-media-gspca-sn9c20x-add-id-for-genius-look-1320-v2.patch @@ -0,0 +1,39 @@ +From 61f0319193c44adbbada920162d880b1fdb3aeb3 Mon Sep 17 00:00:00 2001 +From: Wolfram Sang +Date: Sat, 1 Feb 2014 15:26:00 -0300 +Subject: media: media: gspca: sn9c20x: add ID for Genius Look 1320 V2 + +From: Wolfram Sang + +commit 61f0319193c44adbbada920162d880b1fdb3aeb3 upstream. + +Signed-off-by: Wolfram Sang +Signed-off-by: Hans de Goede +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + Documentation/video4linux/gspca.txt | 1 + + drivers/media/usb/gspca/sn9c20x.c | 1 + + 2 files changed, 2 insertions(+) + +--- a/Documentation/video4linux/gspca.txt ++++ b/Documentation/video4linux/gspca.txt +@@ -55,6 +55,7 @@ zc3xx 0458:700f Genius VideoCam Web V2 + sonixj 0458:7025 Genius Eye 311Q + sn9c20x 0458:7029 Genius Look 320s + sonixj 0458:702e Genius Slim 310 NB ++sn9c20x 0458:7045 Genius Look 1320 V2 + sn9c20x 0458:704a Genius Slim 1320 + sn9c20x 0458:704c Genius i-Look 1321 + sn9c20x 045e:00f4 LifeCam VX-6000 (SN9C20x + OV9650) +--- a/drivers/media/usb/gspca/sn9c20x.c ++++ b/drivers/media/usb/gspca/sn9c20x.c +@@ -2394,6 +2394,7 @@ static const struct usb_device_id device + {USB_DEVICE(0x045e, 0x00f4), SN9C20X(OV9650, 0x30, 0)}, + {USB_DEVICE(0x145f, 0x013d), SN9C20X(OV7660, 0x21, 0)}, + {USB_DEVICE(0x0458, 0x7029), SN9C20X(HV7131R, 0x11, 0)}, ++ {USB_DEVICE(0x0458, 0x7045), SN9C20X(MT9M112, 0x5d, LED_REVERSE)}, + {USB_DEVICE(0x0458, 0x704a), SN9C20X(MT9M112, 0x5d, 0)}, + {USB_DEVICE(0x0458, 0x704c), SN9C20X(MT9M112, 0x5d, 0)}, + {USB_DEVICE(0xa168, 0x0610), SN9C20X(HV7131R, 0x11, 0)}, diff --git a/queue-3.10/media-omap3isp-preview-fix-the-crop-margins.patch b/queue-3.10/media-omap3isp-preview-fix-the-crop-margins.patch new file mode 100644 index 00000000000..20f847f9f96 --- /dev/null +++ b/queue-3.10/media-omap3isp-preview-fix-the-crop-margins.patch @@ -0,0 +1,48 @@ +From 8b57b9669aa884ac75b8d09c251d6b1755533c15 Mon Sep 17 00:00:00 2001 +From: Florian Vaussard +Date: Fri, 17 Jan 2014 16:37:38 -0300 +Subject: media: omap3isp: preview: Fix the crop margins + +From: Florian Vaussard + +commit 8b57b9669aa884ac75b8d09c251d6b1755533c15 upstream. + +Commit 3fdfedaaa "[media] omap3isp: preview: Lower the crop margins" +accidentally changed the previewer's cropping, causing the previewer +to miss four pixels on each line, thus corrupting the final image. +Restored the removed setting. + +Signed-off-by: Florian Vaussard +Signed-off-by: Laurent Pinchart +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/platform/omap3isp/isppreview.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +--- a/drivers/media/platform/omap3isp/isppreview.c ++++ b/drivers/media/platform/omap3isp/isppreview.c +@@ -1079,6 +1079,7 @@ static void preview_config_input_format( + */ + static void preview_config_input_size(struct isp_prev_device *prev, u32 active) + { ++ const struct v4l2_mbus_framefmt *format = &prev->formats[PREV_PAD_SINK]; + struct isp_device *isp = to_isp_device(prev); + unsigned int sph = prev->crop.left; + unsigned int eph = prev->crop.left + prev->crop.width - 1; +@@ -1086,6 +1087,14 @@ static void preview_config_input_size(st + unsigned int elv = prev->crop.top + prev->crop.height - 1; + u32 features; + ++ if (format->code != V4L2_MBUS_FMT_Y8_1X8 && ++ format->code != V4L2_MBUS_FMT_Y10_1X10) { ++ sph -= 2; ++ eph += 2; ++ slv -= 2; ++ elv += 2; ++ } ++ + features = (prev->params.params[0].features & active) + | (prev->params.params[1].features & ~active); + diff --git a/queue-3.10/media-saa7134-fix-warn_on-during-resume.patch b/queue-3.10/media-saa7134-fix-warn_on-during-resume.patch new file mode 100644 index 00000000000..a1d8751b70a --- /dev/null +++ b/queue-3.10/media-saa7134-fix-warn_on-during-resume.patch @@ -0,0 +1,38 @@ +From 30d652823de5fd7907d40e969a2d8e23938d8d03 Mon Sep 17 00:00:00 2001 +From: Hans Verkuil +Date: Fri, 7 Mar 2014 07:28:39 -0300 +Subject: media: saa7134: fix WARN_ON during resume + +From: Hans Verkuil + +commit 30d652823de5fd7907d40e969a2d8e23938d8d03 upstream. + +Do not attempt to reload the tuner modules when resuming after a suspend. +This triggers a WARN_ON in kernel/kmod.c:148 __request_module. + +This fixes https://bugzilla.kernel.org/show_bug.cgi?id=69581. + +This has always been wrong, but it was never noticed until the WARN_ON +was added in 3.9. + +Signed-off-by: Hans Verkuil +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/pci/saa7134/saa7134-cards.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/media/pci/saa7134/saa7134-cards.c ++++ b/drivers/media/pci/saa7134/saa7134-cards.c +@@ -8045,8 +8045,8 @@ int saa7134_board_init2(struct saa7134_d + break; + } /* switch() */ + +- /* initialize tuner */ +- if (TUNER_ABSENT != dev->tuner_type) { ++ /* initialize tuner (don't do this when resuming) */ ++ if (!dev->insuspend && TUNER_ABSENT != dev->tuner_type) { + int has_demod = (dev->tda9887_conf & TDA9887_PRESENT); + + /* Note: radio tuner address is always filled in, diff --git a/queue-3.10/media-uvcvideo-do-not-use-usb_set_interface-on-bulk-ep.patch b/queue-3.10/media-uvcvideo-do-not-use-usb_set_interface-on-bulk-ep.patch new file mode 100644 index 00000000000..50410171932 --- /dev/null +++ b/queue-3.10/media-uvcvideo-do-not-use-usb_set_interface-on-bulk-ep.patch @@ -0,0 +1,71 @@ +From b1e43f232698274871e1358c276d7b0242a7d607 Mon Sep 17 00:00:00 2001 +From: Oleksij Rempel +Date: Sun, 16 Feb 2014 06:59:32 -0300 +Subject: media: uvcvideo: Do not use usb_set_interface on bulk EP + +From: Oleksij Rempel + +commit b1e43f232698274871e1358c276d7b0242a7d607 upstream. + +The UVC specification uses alternate setting selection to notify devices +of stream start/stop. This breaks when using bulk-based devices, as the +video streaming interface has a single alternate setting in that case, +making video stream start and video stream stop events to appear +identical to the device. Bulk-based devices are thus not well supported +by UVC. + +The webcam built in the Asus Zenbook UX302LA ignores the set interface +request and will keep the video stream enabled when the driver tries to +stop it. If USB autosuspend is enabled the device will then be suspended +and will crash, requiring a cold reboot. + +USB trace capture showed that Windows sends a CLEAR_FEATURE(HALT) +request to the bulk endpoint when stopping the stream instead of +selecting alternate setting 0. The camera then behaves correctly, and +thus seems to require that behaviour. + +Replace selection of alternate setting 0 with clearing of the endpoint +halt feature at video stream stop for bulk-based devices. Let's refrain +from blaming Microsoft this time, as it's not clear whether this +Windows-specific but USB-compliant behaviour was specifically developed +to handle bulkd-based UVC devices, or if the camera just took advantage +of it. + +Signed-off-by: Oleksij Rempel +Signed-off-by: Laurent Pinchart +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/usb/uvc/uvc_video.c | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +--- a/drivers/media/usb/uvc/uvc_video.c ++++ b/drivers/media/usb/uvc/uvc_video.c +@@ -1846,7 +1846,25 @@ int uvc_video_enable(struct uvc_streamin + + if (!enable) { + uvc_uninit_video(stream, 1); +- usb_set_interface(stream->dev->udev, stream->intfnum, 0); ++ if (stream->intf->num_altsetting > 1) { ++ usb_set_interface(stream->dev->udev, ++ stream->intfnum, 0); ++ } else { ++ /* UVC doesn't specify how to inform a bulk-based device ++ * when the video stream is stopped. Windows sends a ++ * CLEAR_FEATURE(HALT) request to the video streaming ++ * bulk endpoint, mimic the same behaviour. ++ */ ++ unsigned int epnum = stream->header.bEndpointAddress ++ & USB_ENDPOINT_NUMBER_MASK; ++ unsigned int dir = stream->header.bEndpointAddress ++ & USB_ENDPOINT_DIR_MASK; ++ unsigned int pipe; ++ ++ pipe = usb_sndbulkpipe(stream->dev->udev, epnum) | dir; ++ usb_clear_halt(stream->dev->udev, pipe); ++ } ++ + uvc_queue_enable(&stream->queue, 0); + uvc_video_clock_cleanup(stream); + return 0; diff --git a/queue-3.10/media-v4l2-compat-ioctl32-fix-wrong-vidioc_subdev_g-s_edid32-support.patch b/queue-3.10/media-v4l2-compat-ioctl32-fix-wrong-vidioc_subdev_g-s_edid32-support.patch new file mode 100644 index 00000000000..8b01e098925 --- /dev/null +++ b/queue-3.10/media-v4l2-compat-ioctl32-fix-wrong-vidioc_subdev_g-s_edid32-support.patch @@ -0,0 +1,33 @@ +From bc826d6e39fe5f09cbadf8723e9183e6331b586f Mon Sep 17 00:00:00 2001 +From: Hans Verkuil +Date: Thu, 6 Mar 2014 07:24:21 -0300 +Subject: media: v4l2-compat-ioctl32: fix wrong VIDIOC_SUBDEV_G/S_EDID32 support + +From: Hans Verkuil + +commit bc826d6e39fe5f09cbadf8723e9183e6331b586f upstream. + +The wrong ioctl numbers were used due to a copy-and-paste error. + +Signed-off-by: Hans Verkuil +Acked-by: Laurent Pinchart +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c ++++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c +@@ -787,8 +787,8 @@ static int put_v4l2_subdev_edid32(struct + #define VIDIOC_DQBUF32 _IOWR('V', 17, struct v4l2_buffer32) + #define VIDIOC_ENUMSTD32 _IOWR('V', 25, struct v4l2_standard32) + #define VIDIOC_ENUMINPUT32 _IOWR('V', 26, struct v4l2_input32) +-#define VIDIOC_SUBDEV_G_EDID32 _IOWR('V', 63, struct v4l2_subdev_edid32) +-#define VIDIOC_SUBDEV_S_EDID32 _IOWR('V', 64, struct v4l2_subdev_edid32) ++#define VIDIOC_SUBDEV_G_EDID32 _IOWR('V', 40, struct v4l2_subdev_edid32) ++#define VIDIOC_SUBDEV_S_EDID32 _IOWR('V', 41, struct v4l2_subdev_edid32) + #define VIDIOC_TRY_FMT32 _IOWR('V', 64, struct v4l2_format32) + #define VIDIOC_G_EXT_CTRLS32 _IOWR('V', 71, struct v4l2_ext_controls32) + #define VIDIOC_S_EXT_CTRLS32 _IOWR('V', 72, struct v4l2_ext_controls32) diff --git a/queue-3.10/reiserfs-fix-race-in-readdir.patch b/queue-3.10/reiserfs-fix-race-in-readdir.patch new file mode 100644 index 00000000000..6ede84b13d5 --- /dev/null +++ b/queue-3.10/reiserfs-fix-race-in-readdir.patch @@ -0,0 +1,47 @@ +From 01d8885785a60ae8f4c37b0ed75bdc96d0fc6a44 Mon Sep 17 00:00:00 2001 +From: Jeff Mahoney +Date: Wed, 2 Apr 2014 14:40:26 -0400 +Subject: reiserfs: fix race in readdir + +From: Jeff Mahoney + +commit 01d8885785a60ae8f4c37b0ed75bdc96d0fc6a44 upstream. + +jdm-20004 reiserfs_delete_xattrs: Couldn't delete all xattrs (-2) + +The -ENOENT is due to readdir calling dir_emit on the same entry twice. + +If the dir_emit callback sleeps and the tree is changed underneath us, +we won't be able to trust deh_offset(deh) anymore. We need to save +next_pos before we might sleep so we can find the next entry. + +Signed-off-by: Jeff Mahoney +Signed-off-by: Jan Kara +Signed-off-by: Greg Kroah-Hartman + +--- + fs/reiserfs/dir.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/fs/reiserfs/dir.c ++++ b/fs/reiserfs/dir.c +@@ -128,6 +128,7 @@ int reiserfs_readdir_dentry(struct dentr + char *d_name; + off_t d_off; + ino_t d_ino; ++ loff_t cur_pos = deh_offset(deh); + + if (!de_visible(deh)) + /* it is hidden entry */ +@@ -200,8 +201,9 @@ int reiserfs_readdir_dentry(struct dentr + if (local_buf != small_buf) { + kfree(local_buf); + } +- // next entry should be looked for with such offset +- next_pos = deh_offset(deh) + 1; ++ ++ /* deh_offset(deh) may be invalid now. */ ++ next_pos = cur_pos + 1; + + if (item_moved(&tmp_ih, &path_to_entry)) { + set_cpu_key_k_offset(&pos_key, diff --git a/queue-3.10/series b/queue-3.10/series index 7264431a165..ea0d4e63514 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -55,3 +55,18 @@ scsi-arcmsr-upper-32-of-dma-address-lost.patch iscsi-target-fix-erl-2-async_event-connection-pointer-bug.patch target-tcm_fc-fix-use-after-free-of-ft_tpg.patch x86-efi-correct-efi-boot-stub-use-of-code32_start.patch +reiserfs-fix-race-in-readdir.patch +usb-gadget-tcm_usb_gadget-stop-format-strings.patch +usb-gadget-zero-fix-superspeed-enumeration-for-alternate-setting-1.patch +xhci-prevent-runtime-pm-from-autosuspending-during-initialization.patch +xhci-extend-quirk-for-renesas-cards.patch +usb-xhci-fix-compilation-warning-when-config_pci-config_pm.patch +media-uvcvideo-do-not-use-usb_set_interface-on-bulk-ep.patch +media-v4l2-compat-ioctl32-fix-wrong-vidioc_subdev_g-s_edid32-support.patch +media-m88rs2000-prevent-frontend-crash-on-continuous-transponder-scans.patch +media-m88rs2000-add-caps-fe_can_inversion_auto.patch +media-em28xx-fix-pctv-290e-lna-oops.patch +media-saa7134-fix-warn_on-during-resume.patch +media-omap3isp-preview-fix-the-crop-margins.patch +media-media-gspca-sn9c20x-add-id-for-genius-look-1320-v2.patch +usb-dwc3-fix-wrong-bit-mask-in-dwc3_event_devt.patch diff --git a/queue-3.10/usb-dwc3-fix-wrong-bit-mask-in-dwc3_event_devt.patch b/queue-3.10/usb-dwc3-fix-wrong-bit-mask-in-dwc3_event_devt.patch new file mode 100644 index 00000000000..aecfb2b7a72 --- /dev/null +++ b/queue-3.10/usb-dwc3-fix-wrong-bit-mask-in-dwc3_event_devt.patch @@ -0,0 +1,58 @@ +From 06f9b6e59661cee510b04513b13ea7927727d758 Mon Sep 17 00:00:00 2001 +From: Huang Rui +Date: Tue, 7 Jan 2014 17:45:50 +0800 +Subject: usb: dwc3: fix wrong bit mask in dwc3_event_devt + +From: Huang Rui + +commit 06f9b6e59661cee510b04513b13ea7927727d758 upstream. + +Around DWC USB3 2.30a release another bit has been added to the +Device-Specific Event (DEVT) Event Information (EvtInfo) bitfield. + +Because of that, what used to be 8 bits long, has become 9 bits long. + +Per dwc3 2.30a+ spec in the Device-Specific Event (DEVT), the field of +Event Information Bits(EvtInfo) uses [24:16] bits, and it has 9 bits +not 8 bits. And the following reserved field uses [31:25] bits not +[31:24] bits, and it has 7 bits. + +So in dwc3_event_devt, the bit mask should be: +event_info [24:16] 9 bits +reserved31_25 [31:25] 7 bits + +This patch makes sure that newer core releases will work fine with +Linux and that we will decode the event information properly on new +core releases. + +[ balbi@ti.com : improve commit log a bit ] + +Signed-off-by: Huang Rui +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/dwc3/core.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/usb/dwc3/core.h ++++ b/drivers/usb/dwc3/core.h +@@ -836,15 +836,15 @@ struct dwc3_event_depevt { + * 12 - VndrDevTstRcved + * @reserved15_12: Reserved, not used + * @event_info: Information about this event +- * @reserved31_24: Reserved, not used ++ * @reserved31_25: Reserved, not used + */ + struct dwc3_event_devt { + u32 one_bit:1; + u32 device_event:7; + u32 type:4; + u32 reserved15_12:4; +- u32 event_info:8; +- u32 reserved31_24:8; ++ u32 event_info:9; ++ u32 reserved31_25:7; + } __packed; + + /** diff --git a/queue-3.10/usb-gadget-tcm_usb_gadget-stop-format-strings.patch b/queue-3.10/usb-gadget-tcm_usb_gadget-stop-format-strings.patch new file mode 100644 index 00000000000..93c87b9cf55 --- /dev/null +++ b/queue-3.10/usb-gadget-tcm_usb_gadget-stop-format-strings.patch @@ -0,0 +1,30 @@ +From aba37fd975f0dd58e025c99c2a79b61b20190831 Mon Sep 17 00:00:00 2001 +From: Kees Cook +Date: Tue, 11 Mar 2014 13:26:16 -0700 +Subject: usb: gadget: tcm_usb_gadget: stop format strings + +From: Kees Cook + +commit aba37fd975f0dd58e025c99c2a79b61b20190831 upstream. + +This makes sure that the name coming out of configfs cannot be used +accidentally as a format string. + +Signed-off-by: Kees Cook +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/tcm_usb_gadget.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/gadget/tcm_usb_gadget.c ++++ b/drivers/usb/gadget/tcm_usb_gadget.c +@@ -1614,7 +1614,7 @@ static struct se_wwn *usbg_make_tport( + return ERR_PTR(-ENOMEM); + } + tport->tport_wwpn = wwpn; +- snprintf(tport->tport_name, sizeof(tport->tport_name), wnn_name); ++ snprintf(tport->tport_name, sizeof(tport->tport_name), "%s", wnn_name); + return &tport->tport_wwn; + } + diff --git a/queue-3.10/usb-gadget-zero-fix-superspeed-enumeration-for-alternate-setting-1.patch b/queue-3.10/usb-gadget-zero-fix-superspeed-enumeration-for-alternate-setting-1.patch new file mode 100644 index 00000000000..42b5ef6821d --- /dev/null +++ b/queue-3.10/usb-gadget-zero-fix-superspeed-enumeration-for-alternate-setting-1.patch @@ -0,0 +1,48 @@ +From 9c1b70361e0b38e4acb8e62b54da66538cb77ff2 Mon Sep 17 00:00:00 2001 +From: Roger Quadros +Date: Wed, 26 Mar 2014 18:46:38 +0200 +Subject: usb: gadget: zero: Fix SuperSpeed enumeration for alternate setting 1 + +From: Roger Quadros + +commit 9c1b70361e0b38e4acb8e62b54da66538cb77ff2 upstream. + +It was impossible to enumerate on a SuperSpeed (XHCI) host +with alternate setting = 1 due to the wrongly set 'bMaxBurst' +field in the SuperSpeed Endpoint Companion descriptor. + +Testcase: + modprobe -r usbtest; modprobe usbtest alt=1 + modprobe g_zero +plug device to SuperSpeed port on the host. + +Without this patch the host always complains like so +"usb 12-2: Not enough bandwidth for new device state. + usb 12-2: Not enough bandwidth for altsetting 1" + +Bug was introduced by commit cf9a08ae in v3.9 + +Fixes: cf9a08ae5aec (usb: gadget: convert source sink and loopback to +new function interface) + +Reviewed-by: Felipe Balbi +Acked-by: Sebastian Andrzej Siewior +Signed-off-by: Roger Quadros +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/gadget/zero.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/gadget/zero.c ++++ b/drivers/usb/gadget/zero.c +@@ -280,7 +280,7 @@ static int __init zero_bind(struct usb_c + ss_opts->isoc_interval = gzero_options.isoc_interval; + ss_opts->isoc_maxpacket = gzero_options.isoc_maxpacket; + ss_opts->isoc_mult = gzero_options.isoc_mult; +- ss_opts->isoc_maxburst = gzero_options.isoc_maxpacket; ++ ss_opts->isoc_maxburst = gzero_options.isoc_maxburst; + ss_opts->bulk_buflen = gzero_options.bulk_buflen; + + func_ss = usb_get_function(func_inst_ss); diff --git a/queue-3.10/usb-xhci-fix-compilation-warning-when-config_pci-config_pm.patch b/queue-3.10/usb-xhci-fix-compilation-warning-when-config_pci-config_pm.patch new file mode 100644 index 00000000000..ac59f799370 --- /dev/null +++ b/queue-3.10/usb-xhci-fix-compilation-warning-when-config_pci-config_pm.patch @@ -0,0 +1,55 @@ +From 01bb59ebffdec314da8da66266edf29529372f9b Mon Sep 17 00:00:00 2001 +From: David Cohen +Date: Fri, 25 Apr 2014 19:20:16 +0300 +Subject: usb/xhci: fix compilation warning when !CONFIG_PCI && !CONFIG_PM +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: David Cohen + +commit 01bb59ebffdec314da8da66266edf29529372f9b upstream. + +When CONFIG_PCI and CONFIG_PM are not selected, xhci.c gets this +warning: +drivers/usb/host/xhci.c:409:13: warning: ‘xhci_msix_sync_irqs’ defined +but not used [-Wunused-function] + +Instead of creating nested #ifdefs, this patch fixes it by defining the +xHCI PCI stubs as inline. + +This warning has been in since 3.2 kernel and was +caused by commit 421aa841a134f6a743111cf44d0c6d3b45e3cf8c +"usb/xhci: hide MSI code behind PCI bars", but wasn't noticed +until 3.13 when a configuration with these options was tried + +Signed-off-by: David Cohen +Signed-off-by: Mathias Nyman +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/xhci.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/usb/host/xhci.c ++++ b/drivers/usb/host/xhci.c +@@ -394,16 +394,16 @@ static int xhci_try_enable_msi(struct us + + #else + +-static int xhci_try_enable_msi(struct usb_hcd *hcd) ++static inline int xhci_try_enable_msi(struct usb_hcd *hcd) + { + return 0; + } + +-static void xhci_cleanup_msix(struct xhci_hcd *xhci) ++static inline void xhci_cleanup_msix(struct xhci_hcd *xhci) + { + } + +-static void xhci_msix_sync_irqs(struct xhci_hcd *xhci) ++static inline void xhci_msix_sync_irqs(struct xhci_hcd *xhci) + { + } + diff --git a/queue-3.10/xhci-extend-quirk-for-renesas-cards.patch b/queue-3.10/xhci-extend-quirk-for-renesas-cards.patch new file mode 100644 index 00000000000..9da5d315960 --- /dev/null +++ b/queue-3.10/xhci-extend-quirk-for-renesas-cards.patch @@ -0,0 +1,47 @@ +From 6db249ebefc6bf5c39f35dfaacc046d8ad3ffd70 Mon Sep 17 00:00:00 2001 +From: Igor Gnatenko +Date: Fri, 25 Apr 2014 19:20:15 +0300 +Subject: xhci: extend quirk for Renesas cards + +From: Igor Gnatenko + +commit 6db249ebefc6bf5c39f35dfaacc046d8ad3ffd70 upstream. + +After suspend another Renesas PCI-X USB 3.0 card doesn't work. +[root@fedora-20 ~]# lspci -vmnnd 1912: +Device: 03:00.0 +Class: USB controller [0c03] +Vendor: Renesas Technology Corp. [1912] +Device: uPD720202 USB 3.0 Host Controller [0015] +SVendor: Renesas Technology Corp. [1912] +SDevice: uPD720202 USB 3.0 Host Controller [0015] +Rev: 02 +ProgIf: 30 + +This patch should be applied to stable kernel 3.14 that contain +the commit 1aa9578c1a9450fb21501c4f549f5b1edb557e6d +"xhci: Fix resume issues on Renesas chips in Samsung laptops" + +Reported-and-tested-by: Anatoly Kharchenko +Reference: http://redmine.russianfedora.pro/issues/1315 +Signed-off-by: Igor Gnatenko +Signed-off-by: Mathias Nyman +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/xhci-pci.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +--- a/drivers/usb/host/xhci-pci.c ++++ b/drivers/usb/host/xhci-pci.c +@@ -114,9 +114,7 @@ static void xhci_pci_quirks(struct devic + xhci->quirks |= XHCI_TRUST_TX_LENGTH; + } + if (pdev->vendor == PCI_VENDOR_ID_RENESAS && +- pdev->device == 0x0015 && +- pdev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG && +- pdev->subsystem_device == 0xc0cd) ++ pdev->device == 0x0015) + xhci->quirks |= XHCI_RESET_ON_RESUME; + if (pdev->vendor == PCI_VENDOR_ID_VIA) + xhci->quirks |= XHCI_RESET_ON_RESUME; diff --git a/queue-3.10/xhci-prevent-runtime-pm-from-autosuspending-during-initialization.patch b/queue-3.10/xhci-prevent-runtime-pm-from-autosuspending-during-initialization.patch new file mode 100644 index 00000000000..33238e1909f --- /dev/null +++ b/queue-3.10/xhci-prevent-runtime-pm-from-autosuspending-during-initialization.patch @@ -0,0 +1,74 @@ +From bcffae7708eb8352f44dc510b326541fe43a02a4 Mon Sep 17 00:00:00 2001 +From: Mathias Nyman +Date: Mon, 3 Mar 2014 19:30:17 +0200 +Subject: xhci: Prevent runtime pm from autosuspending during initialization +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Mathias Nyman + +commit bcffae7708eb8352f44dc510b326541fe43a02a4 upstream. + +xHCI driver has its own pci probe function that will call usb_hcd_pci_probe +to register its usb-2 bus, and then continue to manually register the +usb-3 bus. usb_hcd_pci_probe does a pm_runtime_put_noidle at the end and +might thus trigger a runtime suspend before the usb-3 bus is ready. + +Prevent the runtime suspend by increasing the usage count in the +beginning of xhci_pci_probe, and decrease it once the usb-3 bus is +ready. + +xhci-platform driver is not using usb_hcd_pci_probe to set up +busses and should not need to have it's usage count increased during probe. + +Signed-off-by: Mathias Nyman +Acked-by: Dan Williams +Acked-by: Alan Stern +Signed-off-by: Sarah Sharp +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/host/xhci-pci.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +--- a/drivers/usb/host/xhci-pci.c ++++ b/drivers/usb/host/xhci-pci.c +@@ -161,6 +161,10 @@ static int xhci_pci_probe(struct pci_dev + struct usb_hcd *hcd; + + driver = (struct hc_driver *)id->driver_data; ++ ++ /* Prevent runtime suspending between USB-2 and USB-3 initialization */ ++ pm_runtime_get_noresume(&dev->dev); ++ + /* Register the USB 2.0 roothub. + * FIXME: USB core must know to register the USB 2.0 roothub first. + * This is sort of silly, because we could just set the HCD driver flags +@@ -170,7 +174,7 @@ static int xhci_pci_probe(struct pci_dev + retval = usb_hcd_pci_probe(dev, id); + + if (retval) +- return retval; ++ goto put_runtime_pm; + + /* USB 2.0 roothub is stored in the PCI device now. */ + hcd = dev_get_drvdata(&dev->dev); +@@ -199,12 +203,17 @@ static int xhci_pci_probe(struct pci_dev + if (xhci->quirks & XHCI_LPM_SUPPORT) + hcd_to_bus(xhci->shared_hcd)->root_hub->lpm_capable = 1; + ++ /* USB-2 and USB-3 roothubs initialized, allow runtime pm suspend */ ++ pm_runtime_put_noidle(&dev->dev); ++ + return 0; + + put_usb3_hcd: + usb_put_hcd(xhci->shared_hcd); + dealloc_usb2_hcd: + usb_hcd_pci_remove(dev); ++put_runtime_pm: ++ pm_runtime_put_noidle(&dev->dev); + return retval; + } + -- 2.47.3