aboutsummaryrefslogtreecommitdiffstats
path: root/main/linux-grsec
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-11-29 12:53:05 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2011-11-29 12:53:05 +0000
commit1ab3cc983506e57c9e8195a4164430af24c79b23 (patch)
tree3c36604db3d8f5154d45e2871c9d55cdf1db780e /main/linux-grsec
parent00afdf68f80f0653625b2c66930c1a2d0880e0e6 (diff)
downloadaports-1ab3cc983506e57c9e8195a4164430af24c79b23.tar.bz2
aports-1ab3cc983506e57c9e8195a4164430af24c79b23.tar.xz
Revert "main/*-grsec: upgrade to 3.0.12 kernel"
Diffstat (limited to 'main/linux-grsec')
-rw-r--r--main/linux-grsec/APKBUILD4
-rw-r--r--main/linux-grsec/grsecurity-2.2.2-3.0.10-unofficial.patch (renamed from main/linux-grsec/grsecurity-2.2.2-3.0.12-unofficial.patch)1900
2 files changed, 38 insertions, 1866 deletions
diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD
index 771757958a..7b0261f04a 100644
--- a/main/linux-grsec/APKBUILD
+++ b/main/linux-grsec/APKBUILD
@@ -2,7 +2,7 @@
_flavor=grsec
pkgname=linux-${_flavor}
-pkgver=3.0.12
+pkgver=3.0.10
_kernver=3.0
pkgrel=0
pkgdesc="Linux kernel with grsecurity"
@@ -139,7 +139,7 @@ dev() {
}
md5sums="398e95866794def22b12dfbc15ce89c0 linux-3.0.tar.bz2
-b3030035fcc87c55ede362a47113af5d patch-3.0.12.bz2
+8e0391dd935d838ee3023ab9daa6b447 patch-3.0.10.bz2
cb9aa7ec8c615a5c3ba730ac951da9d2 grsecurity-2.2.2-3.0.10-unofficial.patch
c41cf0ee9794f393423c6b2093072260 grsec-timblogiw-noconst.patch
ebb99ef6ad8cd2d9fd8f49d5c5849057 0001-ip_gre-dont-increase-dev-needed_headroom-on-a-live-d.patch
diff --git a/main/linux-grsec/grsecurity-2.2.2-3.0.12-unofficial.patch b/main/linux-grsec/grsecurity-2.2.2-3.0.10-unofficial.patch
index 9b60ce0c31..ad5496b8f7 100644
--- a/main/linux-grsec/grsecurity-2.2.2-3.0.12-unofficial.patch
+++ b/main/linux-grsec/grsecurity-2.2.2-3.0.10-unofficial.patch
@@ -158,17 +158,9 @@ index aa47be7..1fbd18f 100644
pcd. [PARIDE]
diff --git a/Makefile b/Makefile
-index 993fe05..167a8c6 100644
+index 36036d1..167a8c6 100644
--- a/Makefile
+++ b/Makefile
-@@ -1,6 +1,6 @@
- VERSION = 3
- PATCHLEVEL = 0
--SUBLEVEL = 12
-+SUBLEVEL = 10
- EXTRAVERSION =
- NAME = Sneaky Weasel
-
@@ -245,8 +245,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
HOSTCC = gcc
@@ -715,19 +707,6 @@ index acca35a..f7debc1 100644
EXPORT_SYMBOL(__clear_user);
EXPORT_SYMBOL(__get_user_1);
-diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
-index 673151c..278c1b0 100644
---- a/arch/arm/kernel/head.S
-+++ b/arch/arm/kernel/head.S
-@@ -348,7 +348,7 @@ __secondary_data:
- * r13 = *virtual* address to jump to upon completion
- */
- __enable_mmu:
--#if defined(CONFIG_ALIGNMENT_TRAP) && __LINUX_ARM_ARCH__ < 6
-+#ifdef CONFIG_ALIGNMENT_TRAP
- orr r0, r0, #CR_A
- #else
- bic r0, r0, #CR_A
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index 5e1e541..6af2d90 100644
--- a/arch/arm/kernel/process.c
@@ -25273,27 +25252,6 @@ index 6249179..b062f45 100644
wake_up(&zatm_vcc->tx_wait);
}
-diff --git a/drivers/base/core.c b/drivers/base/core.c
-index 78445f4..bc8729d 100644
---- a/drivers/base/core.c
-+++ b/drivers/base/core.c
-@@ -22,7 +22,6 @@
- #include <linux/kallsyms.h>
- #include <linux/mutex.h>
- #include <linux/async.h>
--#include <linux/pm_runtime.h>
-
- #include "base.h"
- #include "power/power.h"
-@@ -1743,8 +1742,6 @@ void device_shutdown(void)
- */
- list_del_init(&dev->kobj.entry);
- spin_unlock(&devices_kset->list_lock);
-- /* Disable all device's runtime power management */
-- pm_runtime_disable(dev);
-
- if (dev->bus && dev->bus->shutdown) {
- dev_dbg(dev, "shutdown\n");
diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c
index 82bbb59..f9af954 100644
--- a/drivers/base/devtmpfs.c
@@ -25307,45 +25265,6 @@ index 82bbb59..f9af954 100644
if (err)
printk(KERN_INFO "devtmpfs: error mounting %i\n", err);
else
-diff --git a/drivers/base/node.c b/drivers/base/node.c
-index 5693ece..793f796 100644
---- a/drivers/base/node.c
-+++ b/drivers/base/node.c
-@@ -127,13 +127,12 @@ static ssize_t node_read_meminfo(struct sys_device * dev,
- nid, K(node_page_state(nid, NR_WRITEBACK)),
- nid, K(node_page_state(nid, NR_FILE_PAGES)),
- nid, K(node_page_state(nid, NR_FILE_MAPPED)),
--#ifdef CONFIG_TRANSPARENT_HUGEPAGE
- nid, K(node_page_state(nid, NR_ANON_PAGES)
-+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
- + node_page_state(nid, NR_ANON_TRANSPARENT_HUGEPAGES) *
-- HPAGE_PMD_NR),
--#else
-- nid, K(node_page_state(nid, NR_ANON_PAGES)),
-+ HPAGE_PMD_NR
- #endif
-+ ),
- nid, K(node_page_state(nid, NR_SHMEM)),
- nid, node_page_state(nid, NR_KERNEL_STACK) *
- THREAD_SIZE / 1024,
-@@ -144,14 +143,13 @@ static ssize_t node_read_meminfo(struct sys_device * dev,
- nid, K(node_page_state(nid, NR_SLAB_RECLAIMABLE) +
- node_page_state(nid, NR_SLAB_UNRECLAIMABLE)),
- nid, K(node_page_state(nid, NR_SLAB_RECLAIMABLE)),
--#ifdef CONFIG_TRANSPARENT_HUGEPAGE
- nid, K(node_page_state(nid, NR_SLAB_UNRECLAIMABLE))
-+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
- , nid,
- K(node_page_state(nid, NR_ANON_TRANSPARENT_HUGEPAGES) *
-- HPAGE_PMD_NR));
--#else
-- nid, K(node_page_state(nid, NR_SLAB_UNRECLAIMABLE)));
-+ HPAGE_PMD_NR)
- #endif
-+ );
- n += hugetlb_report_node_meminfo(nid, buf + n);
- return n;
- }
diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
index 84f7c7d..37cfd87 100644
--- a/drivers/base/power/wakeup.c
@@ -27383,7 +27302,7 @@ index 7eef6e1..f8b411e 100644
return can_switch;
}
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
-index e0d0e27..2e5f051 100644
+index ce7914c..2e5f051 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -219,7 +219,7 @@ struct drm_i915_display_funcs {
@@ -27404,15 +27323,7 @@ index e0d0e27..2e5f051 100644
/* protects the irq masks */
spinlock_t irq_lock;
-@@ -541,7 +541,6 @@ typedef struct drm_i915_private {
- u32 savePIPEB_LINK_M1;
- u32 savePIPEB_LINK_N1;
- u32 saveMCHBAR_RENDER_STANDBY;
-- u32 savePCH_PORT_HOTPLUG;
-
- struct {
- /** Bridge to intel-gtt-ko */
-@@ -875,7 +874,7 @@ struct drm_i915_gem_object {
+@@ -874,7 +874,7 @@ struct drm_i915_gem_object {
* will be page flipped away on the next vblank. When it
* reaches 0, dev_priv->pending_flip_queue will be woken up.
*/
@@ -27421,7 +27332,7 @@ index e0d0e27..2e5f051 100644
};
#define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base)
-@@ -1248,7 +1247,7 @@ extern int intel_setup_gmbus(struct drm_device *dev);
+@@ -1247,7 +1247,7 @@ extern int intel_setup_gmbus(struct drm_device *dev);
extern void intel_teardown_gmbus(struct drm_device *dev);
extern void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed);
extern void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit);
@@ -27492,59 +27403,8 @@ index 9b1d669..d88e72c 100644
INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func);
INIT_WORK(&dev_priv->error_work, i915_error_work_func);
-diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
-index 8936d40..5d5def7 100644
---- a/drivers/gpu/drm/i915/i915_reg.h
-+++ b/drivers/gpu/drm/i915/i915_reg.h
-@@ -2544,18 +2544,10 @@
- #define _CURBBASE 0x700c4
- #define _CURBPOS 0x700c8
-
--#define _CURBCNTR_IVB 0x71080
--#define _CURBBASE_IVB 0x71084
--#define _CURBPOS_IVB 0x71088
--
- #define CURCNTR(pipe) _PIPE(pipe, _CURACNTR, _CURBCNTR)
- #define CURBASE(pipe) _PIPE(pipe, _CURABASE, _CURBBASE)
- #define CURPOS(pipe) _PIPE(pipe, _CURAPOS, _CURBPOS)
-
--#define CURCNTR_IVB(pipe) _PIPE(pipe, _CURACNTR, _CURBCNTR_IVB)
--#define CURBASE_IVB(pipe) _PIPE(pipe, _CURABASE, _CURBBASE_IVB)
--#define CURPOS_IVB(pipe) _PIPE(pipe, _CURAPOS, _CURBPOS_IVB)
--
- /* Display A control */
- #define _DSPACNTR 0x70180
- #define DISPLAY_PLANE_ENABLE (1<<31)
-@@ -3141,7 +3133,6 @@
- #define FDI_LINK_TRAIN_NONE_IVB (3<<8)
-
- /* both Tx and Rx */
--#define FDI_COMPOSITE_SYNC (1<<11)
- #define FDI_LINK_TRAIN_AUTO (1<<10)
- #define FDI_SCRAMBLING_ENABLE (0<<7)
- #define FDI_SCRAMBLING_DISABLE (1<<7)
-diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
-index 27693c0..5257cfc 100644
---- a/drivers/gpu/drm/i915/i915_suspend.c
-+++ b/drivers/gpu/drm/i915/i915_suspend.c
-@@ -814,7 +814,6 @@ int i915_save_state(struct drm_device *dev)
- dev_priv->saveFDI_RXB_IMR = I915_READ(_FDI_RXB_IMR);
- dev_priv->saveMCHBAR_RENDER_STANDBY =
- I915_READ(RSTDBYCTL);
-- dev_priv->savePCH_PORT_HOTPLUG = I915_READ(PCH_PORT_HOTPLUG);
- } else {
- dev_priv->saveIER = I915_READ(IER);
- dev_priv->saveIMR = I915_READ(IMR);
-@@ -866,7 +865,6 @@ int i915_restore_state(struct drm_device *dev)
- I915_WRITE(GTIMR, dev_priv->saveGTIMR);
- I915_WRITE(_FDI_RXA_IMR, dev_priv->saveFDI_RXA_IMR);
- I915_WRITE(_FDI_RXB_IMR, dev_priv->saveFDI_RXB_IMR);
-- I915_WRITE(PCH_PORT_HOTPLUG, dev_priv->savePCH_PORT_HOTPLUG);
- } else {
- I915_WRITE(IER, dev_priv->saveIER);
- I915_WRITE(IMR, dev_priv->saveIMR);
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 853bddb..76e1edc 100644
+index cbf4c4c..76e1edc 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1961,7 +1961,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
@@ -27556,23 +27416,7 @@ index 853bddb..76e1edc 100644
/* Big Hammer, we also need to ensure that any pending
* MI_WAIT_FOR_EVENT inside a user batch buffer on the
-@@ -2340,7 +2340,6 @@ static void ivb_manual_fdi_link_train(struct drm_crtc *crtc)
- temp |= FDI_LINK_TRAIN_PATTERN_1_IVB;
- temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK;
- temp |= FDI_LINK_TRAIN_400MV_0DB_SNB_B;
-- temp |= FDI_COMPOSITE_SYNC;
- I915_WRITE(reg, temp | FDI_TX_ENABLE);
-
- reg = FDI_RX_CTL(pipe);
-@@ -2348,7 +2347,6 @@ static void ivb_manual_fdi_link_train(struct drm_crtc *crtc)
- temp &= ~FDI_LINK_TRAIN_AUTO;
- temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT;
- temp |= FDI_LINK_TRAIN_PATTERN_1_CPT;
-- temp |= FDI_COMPOSITE_SYNC;
- I915_WRITE(reg, temp | FDI_RX_ENABLE);
-
- POSTING_READ(reg);
-@@ -2550,7 +2548,7 @@ static void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc)
+@@ -2548,7 +2548,7 @@ static void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc)
obj = to_intel_framebuffer(crtc->fb)->obj;
dev_priv = crtc->dev->dev_private;
wait_event(dev_priv->pending_flip_queue,
@@ -27581,61 +27425,7 @@ index 853bddb..76e1edc 100644
}
static bool intel_crtc_driving_pch(struct drm_crtc *crtc)
-@@ -5336,31 +5334,6 @@ static void i9xx_update_cursor(struct drm_crtc *crtc, u32 base)
- I915_WRITE(CURBASE(pipe), base);
- }
-
--static void ivb_update_cursor(struct drm_crtc *crtc, u32 base)
--{
-- struct drm_device *dev = crtc->dev;
-- struct drm_i915_private *dev_priv = dev->dev_private;
-- struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-- int pipe = intel_crtc->pipe;
-- bool visible = base != 0;
--
-- if (intel_crtc->cursor_visible != visible) {
-- uint32_t cntl = I915_READ(CURCNTR_IVB(pipe));
-- if (base) {
-- cntl &= ~CURSOR_MODE;
-- cntl |= CURSOR_MODE_64_ARGB_AX | MCURSOR_GAMMA_ENABLE;
-- } else {
-- cntl &= ~(CURSOR_MODE | MCURSOR_GAMMA_ENABLE);
-- cntl |= CURSOR_MODE_DISABLE;
-- }
-- I915_WRITE(CURCNTR_IVB(pipe), cntl);
--
-- intel_crtc->cursor_visible = visible;
-- }
-- /* and commit changes on next vblank */
-- I915_WRITE(CURBASE_IVB(pipe), base);
--}
--
- /* If no-part of the cursor is visible on the framebuffer, then the GPU may hang... */
- static void intel_crtc_update_cursor(struct drm_crtc *crtc,
- bool on)
-@@ -5408,16 +5381,11 @@ static void intel_crtc_update_cursor(struct drm_crtc *crtc,
- if (!visible && !intel_crtc->cursor_visible)
- return;
-
-- if (IS_IVYBRIDGE(dev)) {
-- I915_WRITE(CURPOS_IVB(pipe), pos);
-- ivb_update_cursor(crtc, base);
-- } else {
-- I915_WRITE(CURPOS(pipe), pos);
-- if (IS_845G(dev) || IS_I865G(dev))
-- i845_update_cursor(crtc, base);
-- else
-- i9xx_update_cursor(crtc, base);
-- }
-+ I915_WRITE(CURPOS(pipe), pos);
-+ if (IS_845G(dev) || IS_I865G(dev))
-+ i845_update_cursor(crtc, base);
-+ else
-+ i9xx_update_cursor(crtc, base);
-
- if (visible)
- intel_mark_busy(dev, to_intel_framebuffer(crtc->fb)->obj);
-@@ -6257,7 +6225,7 @@ static void do_intel_finish_page_flip(struct drm_device *dev,
+@@ -6225,7 +6225,7 @@ static void do_intel_finish_page_flip(struct drm_device *dev,
atomic_clear_mask(1 << intel_crtc->plane,
&obj->pending_flip.counter);
@@ -27644,7 +27434,7 @@ index 853bddb..76e1edc 100644
wake_up(&dev_priv->pending_flip_queue);
schedule_work(&work->work);
-@@ -6546,7 +6514,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
+@@ -6514,7 +6514,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
/* Block clients from rendering to the new back buffer until
* the flip occurs and the object is no longer visible.
*/
@@ -27653,7 +27443,7 @@ index 853bddb..76e1edc 100644
ret = dev_priv->display.queue_flip(dev, crtc, fb, obj);
if (ret)
-@@ -6559,7 +6527,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
+@@ -6527,7 +6527,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
return 0;
cleanup_pending:
@@ -31141,104 +30931,6 @@ index f9f29cc..5a2e330 100644
/* Set video format - must be done first as it resets other settings */
set_reg8(client, 0x41, h->video_format);
-diff --git a/drivers/media/video/saa7164/saa7164-cards.c b/drivers/media/video/saa7164/saa7164-cards.c
-index c713691..69822a4 100644
---- a/drivers/media/video/saa7164/saa7164-cards.c
-+++ b/drivers/media/video/saa7164/saa7164-cards.c
-@@ -203,66 +203,6 @@ struct saa7164_board saa7164_boards[] = {
- .i2c_reg_len = REGLEN_8bit,
- } },
- },
-- [SAA7164_BOARD_HAUPPAUGE_HVR2200_4] = {
-- .name = "Hauppauge WinTV-HVR2200",
-- .porta = SAA7164_MPEG_DVB,
-- .portb = SAA7164_MPEG_DVB,
-- .portc = SAA7164_MPEG_ENCODER,
-- .portd = SAA7164_MPEG_ENCODER,
-- .porte = SAA7164_MPEG_VBI,
-- .portf = SAA7164_MPEG_VBI,
-- .chiprev = SAA7164_CHIP_REV3,
-- .unit = {{
-- .id = 0x1d,
-- .type = SAA7164_UNIT_EEPROM,
-- .name = "4K EEPROM",
-- .i2c_bus_nr = SAA7164_I2C_BUS_0,
-- .i2c_bus_addr = 0xa0 >> 1,
-- .i2c_reg_len = REGLEN_8bit,
-- }, {
-- .id = 0x04,
-- .type = SAA7164_UNIT_TUNER,
-- .name = "TDA18271-1",
-- .i2c_bus_nr = SAA7164_I2C_BUS_1,
-- .i2c_bus_addr = 0xc0 >> 1,
-- .i2c_reg_len = REGLEN_8bit,
-- }, {
-- .id = 0x05,
-- .type = SAA7164_UNIT_ANALOG_DEMODULATOR,
-- .name = "TDA8290-1",
-- .i2c_bus_nr = SAA7164_I2C_BUS_1,
-- .i2c_bus_addr = 0x84 >> 1,
-- .i2c_reg_len = REGLEN_8bit,
-- }, {
-- .id = 0x1b,
-- .type = SAA7164_UNIT_TUNER,
-- .name = "TDA18271-2",
-- .i2c_bus_nr = SAA7164_I2C_BUS_2,
-- .i2c_bus_addr = 0xc0 >> 1,
-- .i2c_reg_len = REGLEN_8bit,
-- }, {
-- .id = 0x1c,
-- .type = SAA7164_UNIT_ANALOG_DEMODULATOR,
-- .name = "TDA8290-2",
-- .i2c_bus_nr = SAA7164_I2C_BUS_2,
-- .i2c_bus_addr = 0x84 >> 1,
-- .i2c_reg_len = REGLEN_8bit,
-- }, {
-- .id = 0x1e,
-- .type = SAA7164_UNIT_DIGITAL_DEMODULATOR,
-- .name = "TDA10048-1",
-- .i2c_bus_nr = SAA7164_I2C_BUS_1,
-- .i2c_bus_addr = 0x10 >> 1,
-- .i2c_reg_len = REGLEN_8bit,
-- }, {
-- .id = 0x1f,
-- .type = SAA7164_UNIT_DIGITAL_DEMODULATOR,
-- .name = "TDA10048-2",
-- .i2c_bus_nr = SAA7164_I2C_BUS_2,
-- .i2c_bus_addr = 0x12 >> 1,
-- .i2c_reg_len = REGLEN_8bit,
-- } },
-- },
- [SAA7164_BOARD_HAUPPAUGE_HVR2250] = {
- .name = "Hauppauge WinTV-HVR2250",
- .porta = SAA7164_MPEG_DVB,
-@@ -486,10 +426,6 @@ struct saa7164_subid saa7164_subids[] = {
- .subvendor = 0x0070,
- .subdevice = 0x8851,
- .card = SAA7164_BOARD_HAUPPAUGE_HVR2250_2,
-- }, {
-- .subvendor = 0x0070,
-- .subdevice = 0x8940,
-- .card = SAA7164_BOARD_HAUPPAUGE_HVR2200_4,
- },
- };
- const unsigned int saa7164_idcount = ARRAY_SIZE(saa7164_subids);
-@@ -533,7 +469,6 @@ void saa7164_gpio_setup(struct saa7164_dev *dev)
- case SAA7164_BOARD_HAUPPAUGE_HVR2200:
- case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
- case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
-- case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
- case SAA7164_BOARD_HAUPPAUGE_HVR2250:
- case SAA7164_BOARD_HAUPPAUGE_HVR2250_2:
- case SAA7164_BOARD_HAUPPAUGE_HVR2250_3:
-@@ -614,7 +549,6 @@ void saa7164_card_setup(struct saa7164_dev *dev)
- case SAA7164_BOARD_HAUPPAUGE_HVR2200:
- case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
- case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
-- case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
- case SAA7164_BOARD_HAUPPAUGE_HVR2250:
- case SAA7164_BOARD_HAUPPAUGE_HVR2250_2:
- case SAA7164_BOARD_HAUPPAUGE_HVR2250_3:
diff --git a/drivers/media/video/saa7164/saa7164-cmd.c b/drivers/media/video/saa7164/saa7164-cmd.c
index 62fac7f..f29e0b9 100644
--- a/drivers/media/video/saa7164/saa7164-cmd.c
@@ -31261,30 +30953,6 @@ index 62fac7f..f29e0b9 100644
while (loop) {
struct tmComResInfo tRsp = { 0, 0, 0, 0, 0, 0 };
-diff --git a/drivers/media/video/saa7164/saa7164-dvb.c b/drivers/media/video/saa7164/saa7164-dvb.c
-index d377937..f65eab6 100644
---- a/drivers/media/video/saa7164/saa7164-dvb.c
-+++ b/drivers/media/video/saa7164/saa7164-dvb.c
-@@ -475,7 +475,6 @@ int saa7164_dvb_register(struct saa7164_port *port)
- case SAA7164_BOARD_HAUPPAUGE_HVR2200:
- case SAA7164_BOARD_HAUPPAUGE_HVR2200_2:
- case SAA7164_BOARD_HAUPPAUGE_HVR2200_3:
-- case SAA7164_BOARD_HAUPPAUGE_HVR2200_4:
- i2c_bus = &dev->i2c_bus[port->nr + 1];
- switch (port->nr) {
- case 0:
-diff --git a/drivers/media/video/saa7164/saa7164.h b/drivers/media/video/saa7164/saa7164.h
-index 13bd27e..16745d2 100644
---- a/drivers/media/video/saa7164/saa7164.h
-+++ b/drivers/media/video/saa7164/saa7164.h
-@@ -83,7 +83,6 @@
- #define SAA7164_BOARD_HAUPPAUGE_HVR2200_3 6
- #define SAA7164_BOARD_HAUPPAUGE_HVR2250_2 7
- #define SAA7164_BOARD_HAUPPAUGE_HVR2250_3 8
--#define SAA7164_BOARD_HAUPPAUGE_HVR2200_4 9
-
- #define SAA7164_MAX_UNITS 8
- #define SAA7164_TS_NUMBER_OF_LINES 312
diff --git a/drivers/media/video/timblogiw.c b/drivers/media/video/timblogiw.c
index fc611eb..45ccd26 100644
--- a/drivers/media/video/timblogiw.c
@@ -31604,39 +31272,6 @@ index 5fe5de1..af64f53 100644
if (bytes > ((WM8350_MAX_REGISTER << 1) + 1))
return -EINVAL;
-diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
-index 56c05ef..3546474 100644
---- a/drivers/misc/Kconfig
-+++ b/drivers/misc/Kconfig
-@@ -471,7 +471,7 @@ config BMP085
- module will be called bmp085.
-
- config PCH_PHUB
-- tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) PHUB"
-+ tristate "Intel EG20T PCH / OKI SEMICONDUCTOR IOH(ML7213/ML7223) PHUB"
- depends on PCI
- help
- This driver is for PCH(Platform controller Hub) PHUB(Packet Hub) of
-@@ -479,13 +479,12 @@ config PCH_PHUB
- processor. The Topcliff has MAC address and Option ROM data in SROM.
- This driver can access MAC address and Option ROM data in SROM.
-
-- This driver also can be used for LAPIS Semiconductor's IOH,
-- ML7213/ML7223/ML7831.
-- ML7213 which is for IVI(In-Vehicle Infotainment) use.
-- ML7223 IOH is for MP(Media Phone) use.
-- ML7831 IOH is for general purpose use.
-- ML7213/ML7223/ML7831 is companion chip for Intel Atom E6xx series.
-- ML7213/ML7223/ML7831 is completely compatible for Intel EG20T PCH.
-+ This driver also can be used for OKI SEMICONDUCTOR IOH(Input/
-+ Output Hub), ML7213 and ML7223.
-+ ML7213 IOH is for IVI(In-Vehicle Infotainment) use and ML7223 IOH is
-+ for MP(Media Phone) use.
-+ ML7213/ML7223 is companion chip for Intel Atom E6xx series.
-+ ML7213/ML7223 is completely compatible for Intel EG20T PCH.
-
- To compile this driver as a module, choose M here: the module will
- be called pch_phub.
diff --git a/drivers/misc/lis3lv02d/lis3lv02d.c b/drivers/misc/lis3lv02d/lis3lv02d.c
index 8b51cd6..f628f8d 100644
--- a/drivers/misc/lis3lv02d/lis3lv02d.c
@@ -31690,60 +31325,6 @@ index a193958..4d7ecd2 100644
union axis_conversion ac; /* hw -> logical axis */
int mapped_btns[3];
-diff --git a/drivers/misc/pch_phub.c b/drivers/misc/pch_phub.c
-index 97e1a1f..5fe79df 100644
---- a/drivers/misc/pch_phub.c
-+++ b/drivers/misc/pch_phub.c
-@@ -73,9 +73,6 @@
- #define PCI_DEVICE_ID_ROHM_ML7223_mPHUB 0x8012 /* for Bus-m */
- #define PCI_DEVICE_ID_ROHM_ML7223_nPHUB 0x8002 /* for Bus-n */
-
--/* Macros for ML7831 */
--#define PCI_DEVICE_ID_ROHM_ML7831_PHUB 0x8801
--
- /* SROM ACCESS Macro */
- #define PCH_WORD_ADDR_MASK (~((1 << 2) - 1))
-
-@@ -467,7 +464,7 @@ static int pch_phub_write_gbe_mac_addr(struct pch_phub_reg *chip, u8 *data)
- int retval;
- int i;
-
-- if ((chip->ioh_type == 1) || (chip->ioh_type == 5)) /* EG20T or ML7831*/
-+ if (chip->ioh_type == 1) /* EG20T */
- retval = pch_phub_gbe_serial_rom_conf(chip);
- else /* ML7223 */
- retval = pch_phub_gbe_serial_rom_conf_mp(chip);
-@@ -757,22 +754,6 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev,
- chip->pch_opt_rom_start_address =\
- PCH_PHUB_ROM_START_ADDR_ML7223;
- chip->pch_mac_start_address = PCH_PHUB_MAC_START_ADDR_ML7223;
-- } else if (id->driver_data == 5) { /* ML7831 */
-- retval = sysfs_create_file(&pdev->dev.kobj,
-- &dev_attr_pch_mac.attr);
-- if (retval)
-- goto err_sysfs_create;
--
-- retval = sysfs_create_bin_file(&pdev->dev.kobj, &pch_bin_attr);
-- if (retval)
-- goto exit_bin_attr;
--
-- /* set the prefech value */
-- iowrite32(0x000affaa, chip->pch_phub_base_address + 0x14);
-- /* set the interrupt delay value */
-- iowrite32(0x25, chip->pch_phub_base_address + 0x44);
-- chip->pch_opt_rom_start_address = PCH_PHUB_ROM_START_ADDR_EG20T;
-- chip->pch_mac_start_address = PCH_PHUB_MAC_START_ADDR_EG20T;
- }
-
- chip->ioh_type = id->driver_data;
-@@ -857,7 +838,6 @@ static struct pci_device_id pch_phub_pcidev_id[] = {
- { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ROHM_ML7213_PHUB), 2, },
- { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ROHM_ML7223_mPHUB), 3, },
- { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ROHM_ML7223_nPHUB), 4, },
-- { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ROHM_ML7831_PHUB), 5, },
- { }
- };
- MODULE_DEVICE_TABLE(pci, pch_phub_pcidev_id);
diff --git a/drivers/misc/sgi-gru/gruhandles.c b/drivers/misc/sgi-gru/gruhandles.c
index 2f30bad..c4c13d0 100644
--- a/drivers/misc/sgi-gru/gruhandles.c
@@ -32016,18 +31597,6 @@ index 8d082b4..aa749ae 100644
/*
* Timer function to enforce the timelimit on the partition disengage.
-diff --git a/drivers/misc/spear13xx_pcie_gadget.c b/drivers/misc/spear13xx_pcie_gadget.c
-index 43d073b..cfbddbe 100644
---- a/drivers/misc/spear13xx_pcie_gadget.c
-+++ b/drivers/misc/spear13xx_pcie_gadget.c
-@@ -903,6 +903,6 @@ static void __exit spear_pcie_gadget_exit(void)
- }
- module_exit(spear_pcie_gadget_exit);
-
--MODULE_ALIAS("platform:pcie-gadget-spear");
-+MODULE_ALIAS("pcie-gadget-spear");
- MODULE_AUTHOR("Pratyush Anand");
- MODULE_LICENSE("GPL");
diff --git a/drivers/mmc/host/sdhci-pci.c b/drivers/mmc/host/sdhci-pci.c
index 936bbca..8ade4516 100644
--- a/drivers/mmc/host/sdhci-pci.c
@@ -34369,18 +33938,6 @@ index 0a0cc96..fd49ad8 100644
if (*ppos != 0)
return 0;
if (count < sizeof(buf))
-diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c
-index db39742..463352c 100644
---- a/drivers/net/wireless/libertas/if_spi.c
-+++ b/drivers/net/wireless/libertas/if_spi.c
-@@ -997,7 +997,6 @@ static int if_spi_host_to_card(struct lbs_private *priv,
- spin_unlock_irqrestore(&card->buffer_lock, flags);
- break;
- default:
-- kfree(packet);
- netdev_err(priv->dev, "can't transfer buffer of type %d\n",
- type);
- err = -EINVAL;
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 9d4a40e..add74dd 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
@@ -34413,72 +33970,6 @@ index 29f9389..f6d2ce0 100644
rts_threshold = 2347;
tmp = cpu_to_le32(rts_threshold);
-diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
-index 8c82211..c446db6 100644
---- a/drivers/net/wireless/rt2x00/rt2x00.h
-+++ b/drivers/net/wireless/rt2x00/rt2x00.h
-@@ -922,7 +922,6 @@ struct rt2x00_dev {
- * Powersaving work
- */
- struct delayed_work autowakeup_work;
-- struct work_struct sleep_work;
-
- /*
- * Data queue arrays for RX, TX, Beacon and ATIM.
-diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
-index dffaa8f..939821b 100644
---- a/drivers/net/wireless/rt2x00/rt2x00dev.c
-+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
-@@ -449,23 +449,6 @@ static u8 *rt2x00lib_find_ie(u8 *data, unsigned int len, u8 ie)
- return NULL;
- }
-
--static void rt2x00lib_sleep(struct work_struct *work)
--{
-- struct rt2x00_dev *rt2x00dev =
-- container_of(work, struct rt2x00_dev, sleep_work);
--
-- if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags))
-- return;
--
-- /*
-- * Check again is powersaving is enabled, to prevent races from delayed
-- * work execution.
-- */
-- if (!test_bit(CONFIG_POWERSAVING, &rt2x00dev->flags))
-- rt2x00lib_config(rt2x00dev, &rt2x00dev->hw->conf,
-- IEEE80211_CONF_CHANGE_PS);
--}
--
- static void rt2x00lib_rxdone_check_ps(struct rt2x00_dev *rt2x00dev,
- struct sk_buff *skb,
- struct rxdone_entry_desc *rxdesc)
-@@ -513,7 +496,8 @@ static void rt2x00lib_rxdone_check_ps(struct rt2x00_dev *rt2x00dev,
- cam |= (tim_ie->bitmap_ctrl & 0x01);
-
- if (!cam && !test_bit(CONFIG_POWERSAVING, &rt2x00dev->flags))
-- queue_work(rt2x00dev->workqueue, &rt2x00dev->sleep_work);
-+ rt2x00lib_config(rt2x00dev, &rt2x00dev->hw->conf,
-+ IEEE80211_CONF_CHANGE_PS);
- }
-
- static int rt2x00lib_rxdone_read_signal(struct rt2x00_dev *rt2x00dev,
-@@ -1124,7 +1108,6 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
-
- INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled);
- INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup);
-- INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep);
-
- /*
- * Let the driver probe the device to detect the capabilities.
-@@ -1181,7 +1164,6 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
- */
- cancel_work_sync(&rt2x00dev->intf_work);
- cancel_delayed_work_sync(&rt2x00dev->autowakeup_work);
-- cancel_work_sync(&rt2x00dev->sleep_work);
- if (rt2x00_is_usb(rt2x00dev)) {
- del_timer_sync(&rt2x00dev->txstatus_timer);
- cancel_work_sync(&rt2x00dev->rxdone_work);
diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
index d2cc815..9579e62 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c
@@ -34995,18 +34486,10 @@ index 8a0b330..b4286de 100644
if (dev->in_reset) {
dprintk((KERN_DEBUG"aacraid: send raw srb -EBUSY\n"));
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
-index c7b6fed..9c8d000 100644
+index 3382475..9c8d000 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
-@@ -38,7 +38,6 @@
- #include <linux/module.h>
- #include <linux/moduleparam.h>
- #include <linux/pci.h>
--#include <linux/pci-aspm.h>
- #include <linux/slab.h>
- #include <linux/mutex.h>
- #include <linux/spinlock.h>
-@@ -93,7 +92,7 @@ static DECLARE_PCI_DEVICE_TABLE(aac_pci_tbl) = {
+@@ -92,7 +92,7 @@ static DECLARE_PCI_DEVICE_TABLE(aac_pci_tbl) = {
#elif defined(__devinitconst)
static const struct pci_device_id aac_pci_tbl[] __devinitconst = {
#else
@@ -35015,16 +34498,6 @@ index c7b6fed..9c8d000 100644
#endif
{ 0x1028, 0x0001, 0x1028, 0x0001, 0, 0, 0 }, /* PERC 2/Si (Iguana/PERC2Si) */
{ 0x1028, 0x0002, 0x1028, 0x0002, 0, 0, 1 }, /* PERC 3/Di (Opal/PERC3Di) */
-@@ -1109,9 +1108,6 @@ static int __devinit aac_probe_one(struct pci_dev *pdev,
- unique_id++;
- }
-
-- pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1 |
-- PCIE_LINK_STATE_CLKPM);
--
- error = pci_enable_device(pdev);
- if (error)
- goto out;
diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c
index d5ff142..49c0ebb 100644
--- a/drivers/scsi/aic94xx/aic94xx_init.c
@@ -35256,18 +34729,10 @@ index 351dc0b..951dc32 100644
/* These three are default values which can be overridden */
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
-index 56a9f3f..9cbea58 100644
+index 6689d5d..9cbea58 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
-@@ -23,7 +23,6 @@
- #include <linux/interrupt.h>
- #include <linux/types.h>
- #include <linux/pci.h>
--#include <linux/pci-aspm.h>
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/delay.h>
-@@ -499,7 +498,7 @@ static inline u32 next_command(struct ctlr_info *h)
+@@ -498,7 +498,7 @@ static inline u32 next_command(struct ctlr_info *h)
u32 a;
if (unlikely(!(h->transMethod & CFGTBL_Trans_Performant)))
@@ -35276,7 +34741,7 @@ index 56a9f3f..9cbea58 100644
if ((*(h->reply_pool_head) & 1) == (h->reply_pool_wraparound)) {
a = *(h->reply_pool_head); /* Next cmd in ring buffer */
-@@ -2956,7 +2955,7 @@ static void start_io(struct ctlr_info *h)
+@@ -2955,7 +2955,7 @@ static void start_io(struct ctlr_info *h)
while (!list_empty(&h->reqQ)) {
c = list_entry(h->reqQ.next, struct CommandList, list);
/* can't do anything if fifo is full */
@@ -35285,7 +34750,7 @@ index 56a9f3f..9cbea58 100644
dev_warn(&h->pdev->dev, "fifo full\n");
break;
}
-@@ -2966,7 +2965,7 @@ static void start_io(struct ctlr_info *h)
+@@ -2965,7 +2965,7 @@ static void start_io(struct ctlr_info *h)
h->Qdepth--;
/* Tell the controller execute command */
@@ -35294,7 +34759,7 @@ index 56a9f3f..9cbea58 100644
/* Put job onto the completed Q */
addQ(&h->cmpQ, c);
-@@ -2975,17 +2974,17 @@ static void start_io(struct ctlr_info *h)
+@@ -2974,17 +2974,17 @@ static void start_io(struct ctlr_info *h)
static inline unsigned long get_next_completion(struct ctlr_info *h)
{
@@ -35315,7 +34780,7 @@ index 56a9f3f..9cbea58 100644
(h->interrupts_enabled == 0);
}
-@@ -3882,16 +3881,12 @@ static int __devinit hpsa_pci_init(struct ctlr_info *h)
+@@ -3881,7 +3881,7 @@ static int __devinit hpsa_pci_init(struct ctlr_info *h)
if (prod_index < 0)
return -ENODEV;
h->product_name = products[prod_index].product_name;
@@ -35324,16 +34789,7 @@ index 56a9f3f..9cbea58 100644
if (hpsa_board_disabled(h->pdev)) {
dev_warn(&h->pdev->dev, "controller appears to be disabled\n");
- return -ENODEV;
- }
--
-- pci_disable_link_state(h->pdev, PCIE_LINK_STATE_L0S |
-- PCIE_LINK_STATE_L1 | PCIE_LINK_STATE_CLKPM);
--
- err = pci_enable_device(h->pdev);
- if (err) {
- dev_warn(&h->pdev->dev, "unable to enable PCI device\n");
-@@ -4163,7 +4158,7 @@ reinit_after_soft_reset:
+@@ -4158,7 +4158,7 @@ reinit_after_soft_reset:
}
/* make sure the board interrupts are off */
@@ -35342,7 +34798,7 @@ index 56a9f3f..9cbea58 100644
if (hpsa_request_irq(h, do_hpsa_intr_msi, do_hpsa_intr_intx))
goto clean2;
-@@ -4197,7 +4192,7 @@ reinit_after_soft_reset:
+@@ -4192,7 +4192,7 @@ reinit_after_soft_reset:
* fake ones to scoop up any residual completions.
*/
spin_lock_irqsave(&h->lock, flags);
@@ -35351,7 +34807,7 @@ index 56a9f3f..9cbea58 100644
spin_unlock_irqrestore(&h->lock, flags);
free_irq(h->intr[h->intr_mode], h);
rc = hpsa_request_irq(h, hpsa_msix_discard_completions,
-@@ -4216,9 +4211,9 @@ reinit_after_soft_reset:
+@@ -4211,9 +4211,9 @@ reinit_after_soft_reset:
dev_info(&h->pdev->dev, "Board READY.\n");
dev_info(&h->pdev->dev,
"Waiting for stale completions to drain.\n");
@@ -35363,7 +34819,7 @@ index 56a9f3f..9cbea58 100644
rc = controller_reset_failed(h->cfgtable);
if (rc)
-@@ -4239,7 +4234,7 @@ reinit_after_soft_reset:
+@@ -4234,7 +4234,7 @@ reinit_after_soft_reset:
}
/* Turn the interrupts on so we can service requests */
@@ -35372,7 +34828,7 @@ index 56a9f3f..9cbea58 100644
hpsa_hba_inquiry(h);
hpsa_register_scsi(h); /* hook ourselves into SCSI subsystem */
-@@ -4292,7 +4287,7 @@ static void hpsa_shutdown(struct pci_dev *pdev)
+@@ -4287,7 +4287,7 @@ static void hpsa_shutdown(struct pci_dev *pdev)
* To write all data in the battery backed cache to disks
*/
hpsa_flush_cache(h);
@@ -35381,7 +34837,7 @@ index 56a9f3f..9cbea58 100644
free_irq(h->intr[h->intr_mode], h);
#ifdef CONFIG_PCI_MSI
if (h->msix_vector)
-@@ -4455,7 +4450,7 @@ static __devinit void hpsa_enter_performant_mode(struct ctlr_info *h,
+@@ -4450,7 +4450,7 @@ static __devinit void hpsa_enter_performant_mode(struct ctlr_info *h,
return;
}
/* Change the access methods to the performant access methods */
@@ -36012,23 +35468,6 @@ index f97acff..0c53d1f 100644
disposition = scsi_decide_disposition(cmd);
if (disposition != SUCCESS &&
-diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
-index b3c6d95..72273a0 100644
---- a/drivers/scsi/scsi_scan.c
-+++ b/drivers/scsi/scsi_scan.c
-@@ -319,7 +319,11 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
- return sdev;
-
- out_device_destroy:
-- __scsi_remove_device(sdev);
-+ scsi_device_set_state(sdev, SDEV_DEL);
-+ transport_destroy_device(&sdev->sdev_gendev);
-+ put_device(&sdev->sdev_dev);
-+ scsi_free_queue(sdev->request_queue);
-+ put_device(&sdev->sdev_gendev);
- out:
- if (display_failure_msg)
- printk(ALLOC_FAILURE_MSG, __func__);
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
index e0bd3f7..816b8a6 100644
--- a/drivers/scsi/scsi_sysfs.c
@@ -37045,26 +36484,6 @@ index d5f923b..9c78228 100644
if (!SCI_Prepare(j))
return 0;
-diff --git a/drivers/tty/hvc/hvc_dcc.c b/drivers/tty/hvc/hvc_dcc.c
-index 44fbeba..435f6fa 100644
---- a/drivers/tty/hvc/hvc_dcc.c
-+++ b/drivers/tty/hvc/hvc_dcc.c
-@@ -46,7 +46,6 @@ static inline char __dcc_getchar(void)
-
- asm volatile("mrc p14, 0, %0, c0, c5, 0 @ read comms data reg"
- : "=r" (__c));
-- isb();
-
- return __c;
- }
-@@ -56,7 +55,6 @@ static inline void __dcc_putchar(char c)
- asm volatile("mcr p14, 0, %0, c0, c5, 0 @ write a char"
- : /* no output register */
- : "r" (c));
-- isb();
- }
-
- static int hvc_dcc_put_chars(uint32_t vt, const char *buf, int count)
diff --git a/drivers/tty/hvc/hvcs.c b/drivers/tty/hvc/hvcs.c
index 4c8b665..1d931eb 100644
--- a/drivers/tty/hvc/hvcs.c
@@ -37352,38 +36771,6 @@ index 13043e8..19f322b 100644
if (!retports)
return -EFAULT;
memset(&tmp, 0, sizeof (tmp));
-diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
-index 9789293..b3692e6 100644
---- a/drivers/tty/serial/Kconfig
-+++ b/drivers/tty/serial/Kconfig
-@@ -1585,7 +1585,7 @@ config SERIAL_IFX6X60
- Support for the IFX6x60 modem devices on Intel MID platforms.
-
- config SERIAL_PCH_UART
-- tristate "Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) UART"
-+ tristate "Intel EG20T PCH / OKI SEMICONDUCTOR IOH(ML7213/ML7223) UART"
- depends on PCI
- select SERIAL_CORE
- help
-@@ -1593,12 +1593,12 @@ config SERIAL_PCH_UART
- which is an IOH(Input/Output Hub) for x86 embedded processor.
- Enabling PCH_DMA, this PCH UART works as DMA mode.
-
-- This driver also can be used for LAPIS Semiconductor IOH(Input/
-- Output Hub), ML7213, ML7223 and ML7831.
-- ML7213 IOH is for IVI(In-Vehicle Infotainment) use, ML7223 IOH is
-- for MP(Media Phone) use and ML7831 IOH is for general purpose use.
-- ML7213/ML7223/ML7831 is companion chip for Intel Atom E6xx series.
-- ML7213/ML7223/ML7831 is completely compatible for Intel EG20T PCH.
-+ This driver also can be used for OKI SEMICONDUCTOR IOH(Input/
-+ Output Hub), ML7213 and ML7223.
-+ ML7213 IOH is for IVI(In-Vehicle Infotainment) use and ML7223 IOH is
-+ for MP(Media Phone) use.
-+ ML7213/ML7223 is companion chip for Intel Atom E6xx series.
-+ ML7213/ML7223 is completely compatible for Intel EG20T PCH.
-
- config SERIAL_MSM_SMD
- bool "Enable tty device interface for some SMD ports"
diff --git a/drivers/tty/serial/kgdboc.c b/drivers/tty/serial/kgdboc.c
index 87e7e6c..89744e0 100644
--- a/drivers/tty/serial/kgdboc.c
@@ -37512,65 +36899,6 @@ index 23bc743..d425c07 100644
pbuf = recv_buf;
do {
num = max3110_read_multi(max, pbuf);
-diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c
-index 902588b..4652109 100644
---- a/drivers/tty/serial/pch_uart.c
-+++ b/drivers/tty/serial/pch_uart.c
-@@ -256,8 +256,6 @@ enum pch_uart_num_t {
- pch_ml7213_uart2,
- pch_ml7223_uart0,
- pch_ml7223_uart1,
-- pch_ml7831_uart0,
-- pch_ml7831_uart1,
- };
-
- static struct pch_uart_driver_data drv_dat[] = {
-@@ -270,8 +268,6 @@ static struct pch_uart_driver_data drv_dat[] = {
- [pch_ml7213_uart2] = {PCH_UART_2LINE, 2},
- [pch_ml7223_uart0] = {PCH_UART_8LINE, 0},
- [pch_ml7223_uart1] = {PCH_UART_2LINE, 1},
-- [pch_ml7831_uart0] = {PCH_UART_8LINE, 0},
-- [pch_ml7831_uart1] = {PCH_UART_2LINE, 1},
- };
-
- static unsigned int default_baud = 9600;
-@@ -629,7 +625,6 @@ static void pch_request_dma(struct uart_port *port)
- dev_err(priv->port.dev, "%s:dma_request_channel FAILS(Rx)\n",
- __func__);
- dma_release_channel(priv->chan_tx);
-- priv->chan_tx = NULL;
- return;
- }
-
-@@ -1217,7 +1212,8 @@ static void pch_uart_shutdown(struct uart_port *port)
- dev_err(priv->port.dev,
- "pch_uart_hal_set_fifo Failed(ret=%d)\n", ret);
-
-- pch_free_dma(port);
-+ if (priv->use_dma_flag)
-+ pch_free_dma(port);
-
- free_irq(priv->port.irq, priv);
- }
-@@ -1281,7 +1277,6 @@ static void pch_uart_set_termios(struct uart_port *port,
- if (rtn)
- goto out;
-
-- pch_uart_set_mctrl(&priv->port, priv->port.mctrl);
- /* Don't rewrite B0 */
- if (tty_termios_baud_rate(termios))
- tty_termios_encode_baud_rate(termios, baud, baud);
-@@ -1550,10 +1545,6 @@ static DEFINE_PCI_DEVICE_TABLE(pch_uart_pci_id) = {
- .driver_data = pch_ml7223_uart0},
- {PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x800D),
- .driver_data = pch_ml7223_uart1},
-- {PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8811),
-- .driver_data = pch_ml7831_uart0},
-- {PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8812),
-- .driver_data = pch_ml7831_uart1},
- {0,},
- };
-
diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
index b44aef0..c5ad11d 100644
--- a/drivers/tty/tty_io.c
@@ -37585,18 +36913,10 @@ index b44aef0..c5ad11d 100644
/*
diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c
-index a76c808..6ddb00e 100644
+index ef925d5..6ddb00e 100644
--- a/drivers/tty/tty_ldisc.c
+++ b/drivers/tty/tty_ldisc.c
-@@ -36,7 +36,6 @@
-
- #include <linux/kmod.h>
- #include <linux/nsproxy.h>
--#include <linux/ratelimit.h>
-
- /*
- * This guards the refcounted line discipline lists. The lock
-@@ -75,7 +74,7 @@ static void put_ldisc(struct tty_ldisc *ld)
+@@ -74,7 +74,7 @@ static void put_ldisc(struct tty_ldisc *ld)
if (atomic_dec_and_lock(&ld->users, &tty_ldisc_lock)) {
struct tty_ldisc_ops *ldo = ld->ops;
@@ -37605,7 +36925,7 @@ index a76c808..6ddb00e 100644
module_put(ldo->owner);
spin_unlock_irqrestore(&tty_ldisc_lock, flags);
-@@ -110,7 +109,7 @@ int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc)
+@@ -109,7 +109,7 @@ int tty_register_ldisc(int disc, struct tty_ldisc_ops *new_ldisc)
spin_lock_irqsave(&tty_ldisc_lock, flags);
tty_ldiscs[disc] = new_ldisc;
new_ldisc->num = disc;
@@ -37614,7 +36934,7 @@ index a76c808..6ddb00e 100644
spin_unlock_irqrestore(&tty_ldisc_lock, flags);
return ret;
-@@ -138,7 +137,7 @@ int tty_unregister_ldisc(int disc)
+@@ -137,7 +137,7 @@ int tty_unregister_ldisc(int disc)
return -EINVAL;
spin_lock_irqsave(&tty_ldisc_lock, flags);
@@ -37623,7 +36943,7 @@ index a76c808..6ddb00e 100644
ret = -EBUSY;
else
tty_ldiscs[disc] = NULL;
-@@ -159,7 +158,7 @@ static struct tty_ldisc_ops *get_ldops(int disc)
+@@ -158,7 +158,7 @@ static struct tty_ldisc_ops *get_ldops(int disc)
if (ldops) {
ret = ERR_PTR(-EAGAIN);
if (try_module_get(ldops->owner)) {
@@ -37632,7 +36952,7 @@ index a76c808..6ddb00e 100644
ret = ldops;
}
}
-@@ -172,7 +171,7 @@ static void put_ldops(struct tty_ldisc_ops *ldops)
+@@ -171,7 +171,7 @@ static void put_ldops(struct tty_ldisc_ops *ldops)
unsigned long flags;
spin_lock_irqsave(&tty_ldisc_lock, flags);
@@ -37641,76 +36961,6 @@ index a76c808..6ddb00e 100644
module_put(ldops->owner);
spin_unlock_irqrestore(&tty_ldisc_lock, flags);
}
-@@ -549,16 +548,15 @@ static void tty_ldisc_flush_works(struct tty_struct *tty)
- /**
- * tty_ldisc_wait_idle - wait for the ldisc to become idle
- * @tty: tty to wait for
-- * @timeout: for how long to wait at most
- *
- * Wait for the line discipline to become idle. The discipline must
- * have been halted for this to guarantee it remains idle.
- */
--static int tty_ldisc_wait_idle(struct tty_struct *tty, long timeout)
-+static int tty_ldisc_wait_idle(struct tty_struct *tty)
- {
-- long ret;
-+ int ret;
- ret = wait_event_timeout(tty_ldisc_idle,
-- atomic_read(&tty->ldisc->users) == 1, timeout);
-+ atomic_read(&tty->ldisc->users) == 1, 5 * HZ);
- if (ret < 0)
- return ret;
- return ret > 0 ? 0 : -EBUSY;
-@@ -668,7 +666,7 @@ int tty_set_ldisc(struct tty_struct *tty, int ldisc)
-
- tty_ldisc_flush_works(tty);
-
-- retval = tty_ldisc_wait_idle(tty, 5 * HZ);
-+ retval = tty_ldisc_wait_idle(tty);
-
- tty_lock();
- mutex_lock(&tty->ldisc_mutex);
-@@ -765,6 +763,8 @@ static int tty_ldisc_reinit(struct tty_struct *tty, int ldisc)
- if (IS_ERR(ld))
- return -1;
-
-+ WARN_ON_ONCE(tty_ldisc_wait_idle(tty));
-+
- tty_ldisc_close(tty, tty->ldisc);
- tty_ldisc_put(tty->ldisc);
- tty->ldisc = NULL;
-@@ -839,7 +839,7 @@ void tty_ldisc_hangup(struct tty_struct *tty)
- tty_unlock();
- cancel_work_sync(&tty->buf.work);
- mutex_unlock(&tty->ldisc_mutex);
--retry:
-+
- tty_lock();
- mutex_lock(&tty->ldisc_mutex);
-
-@@ -848,22 +848,6 @@ retry:
- it means auditing a lot of other paths so this is
- a FIXME */
- if (tty->ldisc) { /* Not yet closed */
-- if (atomic_read(&tty->ldisc->users) != 1) {
-- char cur_n[TASK_COMM_LEN], tty_n[64];
-- long timeout = 3 * HZ;
-- tty_unlock();
--
-- while (tty_ldisc_wait_idle(tty, timeout) == -EBUSY) {
-- timeout = MAX_SCHEDULE_TIMEOUT;
-- printk_ratelimited(KERN_WARNING
-- "%s: waiting (%s) for %s took too long, but we keep waiting...\n",
-- __func__, get_task_comm(cur_n, current),
-- tty_name(tty, tty_n));
-- }
-- mutex_unlock(&tty->ldisc_mutex);
-- goto retry;
-- }
--
- if (reset == 0) {
-
- if (!tty_ldisc_reinit(tty, tty->termios->c_line))
diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
index 3761ccf..2c613b3 100644
--- a/drivers/tty/vt/keyboard.c
@@ -37980,54 +37230,6 @@ index 989e16e..32c4bc7 100644
if (!left--) {
if (instance->disconnected)
-diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
-index 2ffcaa0..5112f57 100644
---- a/drivers/usb/class/cdc-acm.c
-+++ b/drivers/usb/class/cdc-acm.c
-@@ -539,6 +539,7 @@ static void acm_port_down(struct acm *acm)
- {
- int i;
-
-+ mutex_lock(&open_mutex);
- if (acm->dev) {
- usb_autopm_get_interface(acm->control);
- acm_set_control(acm, acm->ctrlout = 0);
-@@ -550,15 +551,14 @@ static void acm_port_down(struct acm *acm)
- acm->control->needs_remote_wakeup = 0;
- usb_autopm_put_interface(acm->control);
- }
-+ mutex_unlock(&open_mutex);
- }
-
- static void acm_tty_hangup(struct tty_struct *tty)
- {
- struct acm *acm = tty->driver_data;
- tty_port_hangup(&acm->port);
-- mutex_lock(&open_mutex);
- acm_port_down(acm);
-- mutex_unlock(&open_mutex);
- }
-
- static void acm_tty_close(struct tty_struct *tty, struct file *filp)
-@@ -569,9 +569,8 @@ static void acm_tty_close(struct tty_struct *tty, struct file *filp)
- shutdown */
- if (!acm)
- return;
--
-- mutex_lock(&open_mutex);
- if (tty_port_close_start(&acm->port, tty, filp) == 0) {
-+ mutex_lock(&open_mutex);
- if (!acm->dev) {
- tty_port_tty_set(&acm->port, NULL);
- acm_tty_unregister(acm);
-@@ -583,7 +582,6 @@ static void acm_tty_close(struct tty_struct *tty, struct file *filp)
- acm_port_down(acm);
- tty_port_close_end(&acm->port, tty);
- tty_port_tty_set(&acm->port, NULL);
-- mutex_unlock(&open_mutex);
- }
-
- static int acm_tty_write(struct tty_struct *tty,
diff --git a/drivers/usb/core/devices.c b/drivers/usb/core/devices.c
index 0149c09..f108812 100644
--- a/drivers/usb/core/devices.c
@@ -38059,23 +37261,6 @@ index 0149c09..f108812 100644
if (file->f_version != event_count) {
file->f_version = event_count;
return POLLIN | POLLRDNORM;
-diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index 210e359..a428aa0 100644
---- a/drivers/usb/core/hub.c
-+++ b/drivers/usb/core/hub.c
-@@ -813,12 +813,6 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
- USB_PORT_FEAT_C_PORT_LINK_STATE);
- }
-
-- if ((portchange & USB_PORT_STAT_C_BH_RESET) &&
-- hub_is_superspeed(hub->hdev)) {
-- need_debounce_delay = true;
-- clear_port_feature(hub->hdev, port1,
-- USB_PORT_FEAT_C_BH_PORT_RESET);
-- }
- /* We can forget about a "removed" device when there's a
- * physical disconnect or the connect status changes.
- */
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index 0b5ec23..0da3d76 100644
--- a/drivers/usb/core/message.c
@@ -38091,53 +37276,6 @@ index 0b5ec23..0da3d76 100644
if (!smallbuf)
return buf;
memcpy(smallbuf, buf, len);
-diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
-index ecf12e1..d6a8d82 100644
---- a/drivers/usb/core/quirks.c
-+++ b/drivers/usb/core/quirks.c
-@@ -50,42 +50,15 @@ static const struct usb_device_id usb_quirk_list[] = {
- /* Logitech Webcam B/C500 */
- { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
-
-- /* Logitech Webcam C600 */
-- { USB_DEVICE(0x046d, 0x0808), .driver_info = USB_QUIRK_RESET_RESUME },
--
- /* Logitech Webcam Pro 9000 */
- { USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME },
-
-- /* Logitech Webcam C905 */
-- { USB_DEVICE(0x046d, 0x080a), .driver_info = USB_QUIRK_RESET_RESUME },
--
-- /* Logitech Webcam C210 */
-- { USB_DEVICE(0x046d, 0x0819), .driver_info = USB_QUIRK_RESET_RESUME },
--
-- /* Logitech Webcam C260 */
-- { USB_DEVICE(0x046d, 0x081a), .driver_info = USB_QUIRK_RESET_RESUME },
--
- /* Logitech Webcam C310 */
- { USB_DEVICE(0x046d, 0x081b), .driver_info = USB_QUIRK_RESET_RESUME },
-
-- /* Logitech Webcam C910 */
-- { USB_DEVICE(0x046d, 0x0821), .driver_info = USB_QUIRK_RESET_RESUME },
--
-- /* Logitech Webcam C160 */
-- { USB_DEVICE(0x046d, 0x0824), .driver_info = USB_QUIRK_RESET_RESUME },
--
- /* Logitech Webcam C270 */
- { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME },
-
-- /* Logitech Quickcam Pro 9000 */
-- { USB_DEVICE(0x046d, 0x0990), .driver_info = USB_QUIRK_RESET_RESUME },
--
-- /* Logitech Quickcam E3500 */
-- { USB_DEVICE(0x046d, 0x09a4), .driver_info = USB_QUIRK_RESET_RESUME },
--
-- /* Logitech Quickcam Vision Pro */
-- { USB_DEVICE(0x046d, 0x09a6), .driver_info = USB_QUIRK_RESET_RESUME },
--
- /* Logitech Harmony 700-series */
- { USB_DEVICE(0x046d, 0xc122), .driver_info = USB_QUIRK_DELAY_INIT },
-
diff --git a/drivers/usb/early/ehci-dbgp.c b/drivers/usb/early/ehci-dbgp.c
index 1fc8f12..20647c1 100644
--- a/drivers/usb/early/ehci-dbgp.c
@@ -38179,59 +37317,11 @@ index 1fc8f12..20647c1 100644
return 0;
}
-diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
-index a495d48..629a968 100644
---- a/drivers/usb/host/pci-quirks.c
-+++ b/drivers/usb/host/pci-quirks.c
-@@ -626,7 +626,7 @@ static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev)
- void __iomem *base, *op_reg_base;
- u32 hcc_params, cap, val;
- u8 offset, cap_length;
-- int wait_time, count = 256/4;
-+ int wait_time, delta, count = 256/4;
-
- if (!mmio_resource_enabled(pdev, 0))
- return;
-@@ -672,10 +672,11 @@ static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev)
- writel(val, op_reg_base + EHCI_USBCMD);
-
- wait_time = 2000;
-+ delta = 100;
- do {
- writel(0x3f, op_reg_base + EHCI_USBSTS);
-- udelay(100);
-- wait_time -= 100;
-+ udelay(delta);
-+ wait_time -= delta;
- val = readl(op_reg_base + EHCI_USBSTS);
- if ((val == ~(u32)0) || (val & EHCI_USBSTS_HALTED)) {
- break;
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
-index ffeee57..af0338a 100644
+index 104620b..af0338a 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
-@@ -875,6 +875,7 @@ int xhci_setup_addressable_virt_dev(struct xhci_hcd *xhci, struct usb_device *ud
- struct xhci_virt_device *dev;
- struct xhci_ep_ctx *ep0_ctx;
- struct xhci_slot_ctx *slot_ctx;
-+ struct xhci_input_control_ctx *ctrl_ctx;
- u32 port_num;
- struct usb_device *top_dev;
-
-@@ -886,8 +887,12 @@ int xhci_setup_addressable_virt_dev(struct xhci_hcd *xhci, struct usb_device *ud
- return -EINVAL;
- }
- ep0_ctx = xhci_get_ep_ctx(xhci, dev->in_ctx, 0);
-+ ctrl_ctx = xhci_get_input_control_ctx(xhci, dev->in_ctx);
- slot_ctx = xhci_get_slot_ctx(xhci, dev->in_ctx);
-
-+ /* 2) New slot context and endpoint 0 context are valid*/
-+ ctrl_ctx->add_flags = cpu_to_le32(SLOT_FLAG | EP0_FLAG);
-+
- /* 3) Only the control endpoint is valid - one endpoint context */
- slot_ctx->dev_info |= cpu_to_le32(LAST_CTX(1) | (u32) udev->route);
- switch (udev->speed) {
-@@ -1685,6 +1690,8 @@ static int xhci_check_trb_in_td_math(struct xhci_hcd *xhci, gfp_t mem_flags)
+@@ -1690,6 +1690,8 @@ static int xhci_check_trb_in_td_math(struct xhci_hcd *xhci, gfp_t mem_flags)
unsigned int num_tests;
int i, ret;
@@ -38240,338 +37330,6 @@ index ffeee57..af0338a 100644
num_tests = ARRAY_SIZE(simple_test_vector);
for (i = 0; i < num_tests; i++) {
ret = xhci_test_trb_in_td(xhci,
-diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
-index b4b0691..b20d2f7 100644
---- a/drivers/usb/host/xhci-ring.c
-+++ b/drivers/usb/host/xhci-ring.c
-@@ -819,24 +819,23 @@ void xhci_stop_endpoint_command_watchdog(unsigned long arg)
- struct xhci_ring *ring;
- struct xhci_td *cur_td;
- int ret, i, j;
-- unsigned long flags;
-
- ep = (struct xhci_virt_ep *) arg;
- xhci = ep->xhci;
-
-- spin_lock_irqsave(&xhci->lock, flags);
-+ spin_lock(&xhci->lock);
-
- ep->stop_cmds_pending--;
- if (xhci->xhc_state & XHCI_STATE_DYING) {
- xhci_dbg(xhci, "Stop EP timer ran, but another timer marked "
- "xHCI as DYING, exiting.\n");
-- spin_unlock_irqrestore(&xhci->lock, flags);
-+ spin_unlock(&xhci->lock);
- return;
- }
- if (!(ep->stop_cmds_pending == 0 && (ep->ep_state & EP_HALT_PENDING))) {
- xhci_dbg(xhci, "Stop EP timer ran, but no command pending, "
- "exiting.\n");
-- spin_unlock_irqrestore(&xhci->lock, flags);
-+ spin_unlock(&xhci->lock);
- return;
- }
-
-@@ -848,11 +847,11 @@ void xhci_stop_endpoint_command_watchdog(unsigned long arg)
- xhci->xhc_state |= XHCI_STATE_DYING;
- /* Disable interrupts from the host controller and start halting it */
- xhci_quiesce(xhci);
-- spin_unlock_irqrestore(&xhci->lock, flags);
-+ spin_unlock(&xhci->lock);
-
- ret = xhci_halt(xhci);
-
-- spin_lock_irqsave(&xhci->lock, flags);
-+ spin_lock(&xhci->lock);
- if (ret < 0) {
- /* This is bad; the host is not responding to commands and it's
- * not allowing itself to be halted. At least interrupts are
-@@ -900,7 +899,7 @@ void xhci_stop_endpoint_command_watchdog(unsigned long arg)
- }
- }
- }
-- spin_unlock_irqrestore(&xhci->lock, flags);
-+ spin_unlock(&xhci->lock);
- xhci_dbg(xhci, "Calling usb_hc_died()\n");
- usb_hc_died(xhci_to_hcd(xhci)->primary_hcd);
- xhci_dbg(xhci, "xHCI host controller is dead.\n");
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 1f0e198..fb61e9d 100644
---- a/drivers/usb/host/xhci.c
-+++ b/drivers/usb/host/xhci.c
-@@ -749,7 +749,7 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
- u32 command, temp = 0;
- struct usb_hcd *hcd = xhci_to_hcd(xhci);
- struct usb_hcd *secondary_hcd;
-- int retval = 0;
-+ int retval;
-
- /* Wait a bit if either of the roothubs need to settle from the
- * transition into bus suspend.
-@@ -759,9 +759,6 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
- xhci->bus_state[1].next_statechange))
- msleep(100);
-
-- set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
-- set_bit(HCD_FLAG_HW_ACCESSIBLE, &xhci->shared_hcd->flags);
--
- spin_lock_irq(&xhci->lock);
- if (xhci->quirks & XHCI_RESET_ON_RESUME)
- hibernated = true;
-@@ -831,13 +828,20 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
- return retval;
- xhci_dbg(xhci, "Start the primary HCD\n");
- retval = xhci_run(hcd->primary_hcd);
-+ if (retval)
-+ goto failed_restart;
-+
-+ xhci_dbg(xhci, "Start the secondary HCD\n");
-+ retval = xhci_run(secondary_hcd);
- if (!retval) {
-- xhci_dbg(xhci, "Start the secondary HCD\n");
-- retval = xhci_run(secondary_hcd);
-+ set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
-+ set_bit(HCD_FLAG_HW_ACCESSIBLE,
-+ &xhci->shared_hcd->flags);
- }
-+failed_restart:
- hcd->state = HC_STATE_SUSPENDED;
- xhci->shared_hcd->state = HC_STATE_SUSPENDED;
-- goto done;
-+ return retval;
- }
-
- /* step 4: set Run/Stop bit */
-@@ -856,14 +860,11 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
- * Running endpoints by ringing their doorbells
- */
-
-- spin_unlock_irq(&xhci->lock);
-+ set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
-+ set_bit(HCD_FLAG_HW_ACCESSIBLE, &xhci->shared_hcd->flags);
-
-- done:
-- if (retval == 0) {
-- usb_hcd_resume_root_hub(hcd);
-- usb_hcd_resume_root_hub(xhci->shared_hcd);
-- }
-- return retval;
-+ spin_unlock_irq(&xhci->lock);
-+ return 0;
- }
- #endif /* CONFIG_PM */
-
-@@ -2874,10 +2875,6 @@ int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev)
- /* Otherwise, update the control endpoint ring enqueue pointer. */
- else
- xhci_copy_ep0_dequeue_into_input_ctx(xhci, udev);
-- ctrl_ctx = xhci_get_input_control_ctx(xhci, virt_dev->in_ctx);
-- ctrl_ctx->add_flags = cpu_to_le32(SLOT_FLAG | EP0_FLAG);
-- ctrl_ctx->drop_flags = 0;
--
- xhci_dbg(xhci, "Slot ID %d Input Context:\n", udev->slot_id);
- xhci_dbg_ctx(xhci, virt_dev->in_ctx, 2);
-
-@@ -2959,6 +2956,7 @@ int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev)
- virt_dev->address = (le32_to_cpu(slot_ctx->dev_state) & DEV_ADDR_MASK)
- + 1;
- /* Zero the input context control for later use */
-+ ctrl_ctx = xhci_get_input_control_ctx(xhci, virt_dev->in_ctx);
- ctrl_ctx->add_flags = 0;
- ctrl_ctx->drop_flags = 0;
-
-diff --git a/drivers/usb/serial/ark3116.c b/drivers/usb/serial/ark3116.c
-index 18e875b..5cdb9d9 100644
---- a/drivers/usb/serial/ark3116.c
-+++ b/drivers/usb/serial/ark3116.c
-@@ -42,7 +42,7 @@ static int debug;
- * Version information
- */
-
--#define DRIVER_VERSION "v0.7"
-+#define DRIVER_VERSION "v0.6"
- #define DRIVER_AUTHOR "Bart Hartgers <bart.hartgers+ark3116@gmail.com>"
- #define DRIVER_DESC "USB ARK3116 serial/IrDA driver"
- #define DRIVER_DEV_DESC "ARK3116 RS232/IrDA"
-@@ -380,6 +380,10 @@ static int ark3116_open(struct tty_struct *tty, struct usb_serial_port *port)
- goto err_out;
- }
-
-+ /* setup termios */
-+ if (tty)
-+ ark3116_set_termios(tty, port, NULL);
-+
- /* remove any data still left: also clears error state */
- ark3116_read_reg(serial, UART_RX, buf);
-
-@@ -402,10 +406,6 @@ static int ark3116_open(struct tty_struct *tty, struct usb_serial_port *port)
- /* enable DMA */
- ark3116_write_reg(port->serial, UART_FCR, UART_FCR_DMA_SELECT);
-
-- /* setup termios */
-- if (tty)
-- ark3116_set_termios(tty, port, NULL);
--
- err_out:
- kfree(buf);
- return result;
-diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
-index 486769c..1b51d43 100644
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -2080,19 +2080,13 @@ static void ftdi_set_termios(struct tty_struct *tty,
-
- cflag = termios->c_cflag;
-
-- if (old_termios->c_cflag == termios->c_cflag
-- && old_termios->c_ispeed == termios->c_ispeed
-- && old_termios->c_ospeed == termios->c_ospeed)
-- goto no_c_cflag_changes;
--
-+ /* FIXME -For this cut I don't care if the line is really changing or
-+ not - so just do the change regardless - should be able to
-+ compare old_termios and tty->termios */
- /* NOTE These routines can get interrupted by
- ftdi_sio_read_bulk_callback - need to examine what this means -
- don't see any problems yet */
-
-- if ((old_termios->c_cflag & (CSIZE|PARODD|PARENB|CMSPAR|CSTOPB)) ==
-- (termios->c_cflag & (CSIZE|PARODD|PARENB|CMSPAR|CSTOPB)))
-- goto no_data_parity_stop_changes;
--
- /* Set number of data bits, parity, stop bits */
-
- urb_value = 0;
-@@ -2133,7 +2127,6 @@ static void ftdi_set_termios(struct tty_struct *tty,
- }
-
- /* Now do the baudrate */
--no_data_parity_stop_changes:
- if ((cflag & CBAUD) == B0) {
- /* Disable flow control */
- if (usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
-@@ -2161,7 +2154,6 @@ no_data_parity_stop_changes:
-
- /* Set flow control */
- /* Note device also supports DTR/CD (ugh) and Xon/Xoff in hardware */
--no_c_cflag_changes:
- if (cflag & CRTSCTS) {
- dbg("%s Setting to CRTSCTS flow control", __func__);
- if (usb_control_msg(dev,
-diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
-index 3a47cbe..89ae1f6 100644
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -156,7 +156,6 @@ static void option_instat_callback(struct urb *urb);
- #define HUAWEI_PRODUCT_K4511 0x14CC
- #define HUAWEI_PRODUCT_ETS1220 0x1803
- #define HUAWEI_PRODUCT_E353 0x1506
--#define HUAWEI_PRODUCT_E173S 0x1C05
-
- #define QUANTA_VENDOR_ID 0x0408
- #define QUANTA_PRODUCT_Q101 0xEA02
-@@ -317,9 +316,6 @@ static void option_instat_callback(struct urb *urb);
- #define ZTE_PRODUCT_AC8710 0xfff1
- #define ZTE_PRODUCT_AC2726 0xfff5
- #define ZTE_PRODUCT_AC8710T 0xffff
--#define ZTE_PRODUCT_MC2718 0xffe8
--#define ZTE_PRODUCT_AD3812 0xffeb
--#define ZTE_PRODUCT_MC2716 0xffed
-
- #define BENQ_VENDOR_ID 0x04a5
- #define BENQ_PRODUCT_H10 0x4068
-@@ -504,18 +500,6 @@ static const struct option_blacklist_info zte_k3765_z_blacklist = {
- .reserved = BIT(4),
- };
-
--static const struct option_blacklist_info zte_ad3812_z_blacklist = {
-- .sendsetup = BIT(0) | BIT(1) | BIT(2),
--};
--
--static const struct option_blacklist_info zte_mc2718_z_blacklist = {
-- .sendsetup = BIT(1) | BIT(2) | BIT(3) | BIT(4),
--};
--
--static const struct option_blacklist_info zte_mc2716_z_blacklist = {
-- .sendsetup = BIT(1) | BIT(2) | BIT(3),
--};
--
- static const struct option_blacklist_info huawei_cdc12_blacklist = {
- .reserved = BIT(1) | BIT(2),
- };
-@@ -638,7 +622,6 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143D, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143E, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143F, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E173S, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4505, 0xff, 0xff, 0xff),
- .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist },
- { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff),
-@@ -1060,12 +1043,6 @@ static const struct usb_device_id option_ids[] = {
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) },
- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710T, 0xff, 0xff, 0xff) },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2718, 0xff, 0xff, 0xff),
-- .driver_info = (kernel_ulong_t)&zte_mc2718_z_blacklist },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AD3812, 0xff, 0xff, 0xff),
-- .driver_info = (kernel_ulong_t)&zte_ad3812_z_blacklist },
-- { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2716, 0xff, 0xff, 0xff),
-- .driver_info = (kernel_ulong_t)&zte_mc2716_z_blacklist },
- { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },
- { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) },
- { USB_DEVICE(ALINK_VENDOR_ID, DLINK_PRODUCT_DWM_652_U5) }, /* Yes, ALINK_VENDOR_ID */
-diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
-index d44c669..614fabc 100644
---- a/drivers/usb/serial/pl2303.c
-+++ b/drivers/usb/serial/pl2303.c
-@@ -91,6 +91,7 @@ static const struct usb_device_id id_table[] = {
- { USB_DEVICE(SONY_VENDOR_ID, SONY_QN3USB_PRODUCT_ID) },
- { USB_DEVICE(SANWA_VENDOR_ID, SANWA_PRODUCT_ID) },
- { USB_DEVICE(ADLINK_VENDOR_ID, ADLINK_ND6530_PRODUCT_ID) },
-+ { USB_DEVICE(WINCHIPHEAD_VENDOR_ID, WINCHIPHEAD_USBSER_PRODUCT_ID) },
- { USB_DEVICE(SMART_VENDOR_ID, SMART_PRODUCT_ID) },
- { } /* Terminating entry */
- };
-diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
-index c38b8c0..3d10d7f 100644
---- a/drivers/usb/serial/pl2303.h
-+++ b/drivers/usb/serial/pl2303.h
-@@ -145,6 +145,10 @@
- #define ADLINK_VENDOR_ID 0x0b63
- #define ADLINK_ND6530_PRODUCT_ID 0x6530
-
-+/* WinChipHead USB->RS 232 adapter */
-+#define WINCHIPHEAD_VENDOR_ID 0x4348
-+#define WINCHIPHEAD_USBSER_PRODUCT_ID 0x5523
-+
- /* SMART USB Serial Adapter */
- #define SMART_VENDOR_ID 0x0b8c
- #define SMART_PRODUCT_ID 0x2303
-diff --git a/drivers/usb/storage/protocol.c b/drivers/usb/storage/protocol.c
-index 0fded39..fc310f7 100644
---- a/drivers/usb/storage/protocol.c
-+++ b/drivers/usb/storage/protocol.c
-@@ -58,9 +58,7 @@
-
- void usb_stor_pad12_command(struct scsi_cmnd *srb, struct us_data *us)
- {
-- /*
-- * Pad the SCSI command with zeros out to 12 bytes. If the
-- * command already is 12 bytes or longer, leave it alone.
-+ /* Pad the SCSI command with zeros out to 12 bytes
- *
- * NOTE: This only works because a scsi_cmnd struct field contains
- * a unsigned char cmnd[16], so we know we have storage available
-@@ -68,6 +66,9 @@ void usb_stor_pad12_command(struct scsi_cmnd *srb, struct us_data *us)
- for (; srb->cmd_len<12; srb->cmd_len++)
- srb->cmnd[srb->cmd_len] = 0;
-
-+ /* set command length to 12 bytes */
-+ srb->cmd_len = 12;
-+
- /* send the command to the transport layer */
- usb_stor_invoke_transport(srb, us);
- }
diff --git a/drivers/usb/wusbcore/wa-hc.h b/drivers/usb/wusbcore/wa-hc.h
index d6bea3e..60b250e 100644
--- a/drivers/usb/wusbcore/wa-hc.h
@@ -47212,66 +45970,8 @@ index 202f370..9d4565e 100644
memset(&data, 0, sizeof(data));
server = kzalloc(sizeof(struct ncp_server), GFP_KERNEL);
if (!server)
-diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
-index 462a006..f91c62d 100644
---- a/fs/nfs/dir.c
-+++ b/fs/nfs/dir.c
-@@ -1458,12 +1458,12 @@ static struct dentry *nfs_atomic_lookup(struct inode *dir, struct dentry *dentry
- res = NULL;
- goto out;
- /* This turned out not to be a regular file */
-- case -EISDIR:
- case -ENOTDIR:
- goto no_open;
- case -ELOOP:
- if (!(nd->intent.open.flags & O_NOFOLLOW))
- goto no_open;
-+ /* case -EISDIR: */
- /* case -EINVAL: */
- default:
- res = ERR_CAST(inode);
-diff --git a/fs/nfs/file.c b/fs/nfs/file.c
-index dd2f130..2f093ed 100644
---- a/fs/nfs/file.c
-+++ b/fs/nfs/file.c
-@@ -887,35 +887,3 @@ static int nfs_setlease(struct file *file, long arg, struct file_lock **fl)
- file->f_path.dentry->d_name.name, arg);
- return -EINVAL;
- }
--
--#ifdef CONFIG_NFS_V4
--static int
--nfs4_file_open(struct inode *inode, struct file *filp)
--{
-- /*
-- * NFSv4 opens are handled in d_lookup and d_revalidate. If we get to
-- * this point, then something is very wrong
-- */
-- dprintk("NFS: %s called! inode=%p filp=%p\n", __func__, inode, filp);
-- return -ENOTDIR;
--}
--
--const struct file_operations nfs4_file_operations = {
-- .llseek = nfs_file_llseek,
-- .read = do_sync_read,
-- .write = do_sync_write,
-- .aio_read = nfs_file_read,
-- .aio_write = nfs_file_write,
-- .mmap = nfs_file_mmap,
-- .open = nfs4_file_open,
-- .flush = nfs_file_flush,
-- .release = nfs_file_release,
-- .fsync = nfs_file_fsync,
-- .lock = nfs_lock,
-- .flock = nfs_flock,
-- .splice_read = nfs_file_splice_read,
-- .splice_write = nfs_file_splice_write,
-- .check_flags = nfs_check_flags,
-- .setlease = nfs_setlease,
--};
--#endif /* CONFIG_NFS_V4 */
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
-index c48f9f6..875435e 100644
+index 6f4850d..875435e 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -150,7 +150,7 @@ static void nfs_zap_caches_locked(struct inode *inode)
@@ -47283,15 +45983,6 @@ index c48f9f6..875435e 100644
if (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))
nfsi->cache_validity |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE;
else
-@@ -291,7 +291,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)
- */
- inode->i_op = NFS_SB(sb)->nfs_client->rpc_ops->file_inode_ops;
- if (S_ISREG(inode->i_mode)) {
-- inode->i_fop = NFS_SB(sb)->nfs_client->rpc_ops->file_ops;
-+ inode->i_fop = &nfs_file_operations;
- inode->i_data.a_ops = &nfs_file_aops;
- inode->i_data.backing_dev_info = &NFS_SB(sb)->backing_dev_info;
- } else if (S_ISDIR(inode->i_mode)) {
@@ -1000,16 +1000,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt
return nfs_size_to_loff_t(fattr->size) > i_size_read(inode);
}
@@ -47312,42 +46003,6 @@ index c48f9f6..875435e 100644
}
void nfs_fattr_init(struct nfs_fattr *fattr)
-diff --git a/fs/nfs/nfs3proc.c b/fs/nfs/nfs3proc.c
-index 771741f..38053d8 100644
---- a/fs/nfs/nfs3proc.c
-+++ b/fs/nfs/nfs3proc.c
-@@ -853,7 +853,6 @@ const struct nfs_rpc_ops nfs_v3_clientops = {
- .dentry_ops = &nfs_dentry_operations,
- .dir_inode_ops = &nfs3_dir_inode_operations,
- .file_inode_ops = &nfs3_file_inode_operations,
-- .file_ops = &nfs_file_operations,
- .getroot = nfs3_proc_get_root,
- .getattr = nfs3_proc_getattr,
- .setattr = nfs3_proc_setattr,
-diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index a2a7d0a..92cfd2e 100644
---- a/fs/nfs/nfs4proc.c
-+++ b/fs/nfs/nfs4proc.c
-@@ -6008,7 +6008,6 @@ const struct nfs_rpc_ops nfs_v4_clientops = {
- .dentry_ops = &nfs4_dentry_operations,
- .dir_inode_ops = &nfs4_dir_inode_operations,
- .file_inode_ops = &nfs4_file_inode_operations,
-- .file_ops = &nfs4_file_operations,
- .getroot = nfs4_proc_get_root,
- .getattr = nfs4_proc_getattr,
- .setattr = nfs4_proc_setattr,
-diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c
-index f48125d..ac40b85 100644
---- a/fs/nfs/proc.c
-+++ b/fs/nfs/proc.c
-@@ -710,7 +710,6 @@ const struct nfs_rpc_ops nfs_v2_clientops = {
- .dentry_ops = &nfs_dentry_operations,
- .dir_inode_ops = &nfs_dir_inode_operations,
- .file_inode_ops = &nfs_file_inode_operations,
-- .file_ops = &nfs_file_operations,
- .getroot = nfs_proc_get_root,
- .getattr = nfs_proc_getattr,
- .setattr = nfs_proc_setattr,
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index ecd8152..88c2e01 100644
--- a/fs/nfsd/nfs4state.c
@@ -49733,97 +48388,6 @@ index 8d5a506..7f62712 100644
int count;
struct posix_acl *acl;
struct posix_acl_entry *acl_e;
-diff --git a/fs/xfs/linux-2.6/xfs_buf.h b/fs/xfs/linux-2.6/xfs_buf.h
-index 36d6ee4..50a7d5f 100644
---- a/fs/xfs/linux-2.6/xfs_buf.h
-+++ b/fs/xfs/linux-2.6/xfs_buf.h
-@@ -346,6 +346,7 @@ extern struct list_head *xfs_get_buftarg_list(void);
- #define xfs_getsize_buftarg(buftarg) block_size((buftarg)->bt_bdev)
- #define xfs_readonly_buftarg(buftarg) bdev_read_only((buftarg)->bt_bdev)
-
-+#define xfs_binval(buftarg) xfs_flush_buftarg(buftarg, 1)
- #define XFS_bflush(buftarg) xfs_flush_buftarg(buftarg, 1)
-
- #endif /* __XFS_BUF_H__ */
-diff --git a/fs/xfs/linux-2.6/xfs_file.c b/fs/xfs/linux-2.6/xfs_file.c
-index b679198..7f782af2 100644
---- a/fs/xfs/linux-2.6/xfs_file.c
-+++ b/fs/xfs/linux-2.6/xfs_file.c
-@@ -309,19 +309,7 @@ xfs_file_aio_read(
- if (XFS_FORCED_SHUTDOWN(mp))
- return -EIO;
-
-- /*
-- * Locking is a bit tricky here. If we take an exclusive lock
-- * for direct IO, we effectively serialise all new concurrent
-- * read IO to this file and block it behind IO that is currently in
-- * progress because IO in progress holds the IO lock shared. We only
-- * need to hold the lock exclusive to blow away the page cache, so
-- * only take lock exclusively if the page cache needs invalidation.
-- * This allows the normal direct IO case of no page cache pages to
-- * proceeed concurrently without serialisation.
-- */
-- xfs_rw_ilock(ip, XFS_IOLOCK_SHARED);
-- if ((ioflags & IO_ISDIRECT) && inode->i_mapping->nrpages) {
-- xfs_rw_iunlock(ip, XFS_IOLOCK_SHARED);
-+ if (unlikely(ioflags & IO_ISDIRECT)) {
- xfs_rw_ilock(ip, XFS_IOLOCK_EXCL);
-
- if (inode->i_mapping->nrpages) {
-@@ -334,7 +322,8 @@ xfs_file_aio_read(
- }
- }
- xfs_rw_ilock_demote(ip, XFS_IOLOCK_EXCL);
-- }
-+ } else
-+ xfs_rw_ilock(ip, XFS_IOLOCK_SHARED);
-
- trace_xfs_file_read(ip, size, iocb->ki_pos, ioflags);
-
-@@ -669,7 +658,6 @@ xfs_file_aio_write_checks(
- xfs_fsize_t new_size;
- int error = 0;
-
-- xfs_rw_ilock(ip, XFS_ILOCK_EXCL);
- error = generic_write_checks(file, pos, count, S_ISBLK(inode->i_mode));
- if (error) {
- xfs_rw_iunlock(ip, XFS_ILOCK_EXCL | *iolock);
-@@ -761,24 +749,14 @@ xfs_file_dio_aio_write(
- *iolock = XFS_IOLOCK_EXCL;
- else
- *iolock = XFS_IOLOCK_SHARED;
-- xfs_rw_ilock(ip, *iolock);
-+ xfs_rw_ilock(ip, XFS_ILOCK_EXCL | *iolock);
-
- ret = xfs_file_aio_write_checks(file, &pos, &count, iolock);
- if (ret)
- return ret;
-
-- /*
-- * Recheck if there are cached pages that need invalidate after we got
-- * the iolock to protect against other threads adding new pages while
-- * we were waiting for the iolock.
-- */
-- if (mapping->nrpages && *iolock == XFS_IOLOCK_SHARED) {
-- xfs_rw_iunlock(ip, *iolock);
-- *iolock = XFS_IOLOCK_EXCL;
-- xfs_rw_ilock(ip, *iolock);
-- }
--
- if (mapping->nrpages) {
-+ WARN_ON(*iolock != XFS_IOLOCK_EXCL);
- ret = -xfs_flushinval_pages(ip, (pos & PAGE_CACHE_MASK), -1,
- FI_REMAPF_LOCKED);
- if (ret)
-@@ -823,7 +801,7 @@ xfs_file_buffered_aio_write(
- size_t count = ocount;
-
- *iolock = XFS_IOLOCK_EXCL;
-- xfs_rw_ilock(ip, *iolock);
-+ xfs_rw_ilock(ip, XFS_ILOCK_EXCL | *iolock);
-
- ret = xfs_file_aio_write_checks(file, &pos, &count, iolock);
- if (ret)
diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c
index acca2c5..5c67296 100644
--- a/fs/xfs/linux-2.6/xfs_ioctl.c
@@ -49850,45 +48414,10 @@ index 54e623b..5c3fd7a 100644
if (error)
return -error;
diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c
-index f5b697b..ef7ad2d 100644
+index d44d92c..ef7ad2d 100644
--- a/fs/xfs/linux-2.6/xfs_iops.c
+++ b/fs/xfs/linux-2.6/xfs_iops.c
-@@ -69,8 +69,9 @@ xfs_synchronize_times(
- }
-
- /*
-- * If the linux inode is valid, mark it dirty, else mark the dirty state
-- * in the XFS inode to make sure we pick it up when reclaiming the inode.
-+ * If the linux inode is valid, mark it dirty.
-+ * Used when committing a dirty inode into a transaction so that
-+ * the inode will get written back by the linux code
- */
- void
- xfs_mark_inode_dirty_sync(
-@@ -80,10 +81,6 @@ xfs_mark_inode_dirty_sync(
-
- if (!(inode->i_state & (I_WILL_FREE|I_FREEING)))
- mark_inode_dirty_sync(inode);
-- else {
-- barrier();
-- ip->i_update_core = 1;
-- }
- }
-
- void
-@@ -94,11 +91,6 @@ xfs_mark_inode_dirty(
-
- if (!(inode->i_state & (I_WILL_FREE|I_FREEING)))
- mark_inode_dirty(inode);
-- else {
-- barrier();
-- ip->i_update_core = 1;
-- }
--
- }
-
- /*
-@@ -445,7 +437,7 @@ xfs_vn_put_link(
+@@ -437,7 +437,7 @@ xfs_vn_put_link(
struct nameidata *nd,
void *p)
{
@@ -49897,97 +48426,6 @@ index f5b697b..ef7ad2d 100644
if (!IS_ERR(s))
kfree(s);
-@@ -464,7 +456,7 @@ xfs_vn_getattr(
- trace_xfs_getattr(ip);
-
- if (XFS_FORCED_SHUTDOWN(mp))
-- return -XFS_ERROR(EIO);
-+ return XFS_ERROR(EIO);
-
- stat->size = XFS_ISIZE(ip);
- stat->dev = inode->i_sb->s_dev;
-diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
-index 28de70b..347cae9 100644
---- a/fs/xfs/linux-2.6/xfs_super.c
-+++ b/fs/xfs/linux-2.6/xfs_super.c
-@@ -878,17 +878,33 @@ xfs_log_inode(
- struct xfs_trans *tp;
- int error;
-
-+ xfs_iunlock(ip, XFS_ILOCK_SHARED);
- tp = xfs_trans_alloc(mp, XFS_TRANS_FSYNC_TS);
- error = xfs_trans_reserve(tp, 0, XFS_FSYNC_TS_LOG_RES(mp), 0, 0, 0);
-+
- if (error) {
- xfs_trans_cancel(tp, 0);
-+ /* we need to return with the lock hold shared */
-+ xfs_ilock(ip, XFS_ILOCK_SHARED);
- return error;
- }
-
- xfs_ilock(ip, XFS_ILOCK_EXCL);
-- xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL);
-+
-+ /*
-+ * Note - it's possible that we might have pushed ourselves out of the
-+ * way during trans_reserve which would flush the inode. But there's
-+ * no guarantee that the inode buffer has actually gone out yet (it's
-+ * delwri). Plus the buffer could be pinned anyway if it's part of
-+ * an inode in another recent transaction. So we play it safe and
-+ * fire off the transaction anyway.
-+ */
-+ xfs_trans_ijoin(tp, ip);
- xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
-- return xfs_trans_commit(tp, 0);
-+ error = xfs_trans_commit(tp, 0);
-+ xfs_ilock_demote(ip, XFS_ILOCK_EXCL);
-+
-+ return error;
- }
-
- STATIC int
-@@ -903,9 +919,7 @@ xfs_fs_write_inode(
- trace_xfs_write_inode(ip);
-
- if (XFS_FORCED_SHUTDOWN(mp))
-- return -XFS_ERROR(EIO);
-- if (!ip->i_update_core)
-- return 0;
-+ return XFS_ERROR(EIO);
-
- if (wbc->sync_mode == WB_SYNC_ALL) {
- /*
-@@ -916,10 +930,12 @@ xfs_fs_write_inode(
- * of synchronous log foces dramatically.
- */
- xfs_ioend_wait(ip);
-- error = xfs_log_inode(ip);
-- if (error)
-- goto out;
-- return 0;
-+ xfs_ilock(ip, XFS_ILOCK_SHARED);
-+ if (ip->i_update_core) {
-+ error = xfs_log_inode(ip);
-+ if (error)
-+ goto out_unlock;
-+ }
- } else {
- /*
- * We make this non-blocking if the inode is contended, return
-diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c
-index e70c7fc..b94dace 100644
---- a/fs/xfs/quota/xfs_qm.c
-+++ b/fs/xfs/quota/xfs_qm.c
-@@ -714,8 +714,7 @@ xfs_qm_dqattach_one(
- * disk and we didn't ask it to allocate;
- * ESRCH if quotas got turned off suddenly.
- */
-- error = xfs_qm_dqget(ip->i_mount, ip, id, type,
-- doalloc | XFS_QMOPT_DOWARN, &dqp);
-+ error = xfs_qm_dqget(ip->i_mount, ip, id, type, XFS_QMOPT_DOWARN, &dqp);
- if (error)
- return error;
-
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
index e546a33..08583b8 100644
--- a/fs/xfs/xfs_bmap.c
@@ -50001,18 +48439,6 @@ index e546a33..08583b8 100644
#endif /* DEBUG */
STATIC int
-diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c
-index 7888a75..a7342e8 100644
---- a/fs/xfs/xfs_buf_item.c
-+++ b/fs/xfs/xfs_buf_item.c
-@@ -1023,6 +1023,7 @@ xfs_buf_iodone_callbacks(
- XFS_BUF_UNDELAYWRITE(bp);
-
- trace_xfs_buf_error_relse(bp, _RET_IP_);
-+ xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR);
-
- do_callbacks:
- xfs_buf_do_callbacks(bp);
diff --git a/fs/xfs/xfs_dir2_sf.c b/fs/xfs/xfs_dir2_sf.c
index b1bae6b..5aa3993 100644
--- a/fs/xfs/xfs_dir2_sf.c
@@ -50034,103 +48460,6 @@ index b1bae6b..5aa3993 100644
off & 0x7fffffff, ino, DT_UNKNOWN)) {
*offset = off & 0x7fffffff;
return 0;
-diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
-index 9afdd49..b49b823 100644
---- a/fs/xfs/xfs_mount.c
-+++ b/fs/xfs/xfs_mount.c
-@@ -44,6 +44,9 @@
- #include "xfs_trace.h"
-
-
-+STATIC void xfs_unmountfs_wait(xfs_mount_t *);
-+
-+
- #ifdef HAVE_PERCPU_SB
- STATIC void xfs_icsb_balance_counter(xfs_mount_t *, xfs_sb_field_t,
- int);
-@@ -1504,6 +1507,11 @@ xfs_unmountfs(
- */
- xfs_log_force(mp, XFS_LOG_SYNC);
-
-+ xfs_binval(mp->m_ddev_targp);
-+ if (mp->m_rtdev_targp) {
-+ xfs_binval(mp->m_rtdev_targp);
-+ }
-+
- /*
- * Unreserve any blocks we have so that when we unmount we don't account
- * the reserved free space as used. This is really only necessary for
-@@ -1529,16 +1537,7 @@ xfs_unmountfs(
- xfs_warn(mp, "Unable to update superblock counters. "
- "Freespace may not be correct on next mount.");
- xfs_unmountfs_writesb(mp);
--
-- /*
-- * Make sure all buffers have been flushed and completed before
-- * unmounting the log.
-- */
-- error = xfs_flush_buftarg(mp->m_ddev_targp, 1);
-- if (error)
-- xfs_warn(mp, "%d busy buffers during unmount.", error);
-- xfs_wait_buftarg(mp->m_ddev_targp);
--
-+ xfs_unmountfs_wait(mp); /* wait for async bufs */
- xfs_log_unmount_write(mp);
- xfs_log_unmount(mp);
- xfs_uuid_unmount(mp);
-@@ -1549,6 +1548,16 @@ xfs_unmountfs(
- xfs_free_perag(mp);
- }
-
-+STATIC void
-+xfs_unmountfs_wait(xfs_mount_t *mp)
-+{
-+ if (mp->m_logdev_targp != mp->m_ddev_targp)
-+ xfs_wait_buftarg(mp->m_logdev_targp);
-+ if (mp->m_rtdev_targp)
-+ xfs_wait_buftarg(mp->m_rtdev_targp);
-+ xfs_wait_buftarg(mp->m_ddev_targp);
-+}
-+
- int
- xfs_fs_writable(xfs_mount_t *mp)
- {
-diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c
-index 6cc4d41..6197207 100644
---- a/fs/xfs/xfs_vnodeops.c
-+++ b/fs/xfs/xfs_vnodeops.c
-@@ -535,7 +535,7 @@ xfs_readlink(
- char *link)
- {
- xfs_mount_t *mp = ip->i_mount;
-- xfs_fsize_t pathlen;
-+ int pathlen;
- int error = 0;
-
- trace_xfs_readlink(ip);
-@@ -545,19 +545,13 @@ xfs_readlink(
-
- xfs_ilock(ip, XFS_ILOCK_SHARED);
-
-+ ASSERT((ip->i_d.di_mode & S_IFMT) == S_IFLNK);
-+ ASSERT(ip->i_d.di_size <= MAXPATHLEN);
-+
- pathlen = ip->i_d.di_size;
- if (!pathlen)
- goto out;
-
-- if (pathlen < 0 || pathlen > MAXPATHLEN) {
-- xfs_alert(mp, "%s: inode (%llu) bad symlink length (%lld)",
-- __func__, (unsigned long long) ip->i_ino,
-- (long long) pathlen);
-- ASSERT(0);
-- return XFS_ERROR(EFSCORRUPTED);
-- }
--
--
- if (ip->i_df.if_flags & XFS_IFINLINE) {
- memcpy(link, ip->i_df.if_u1.if_data, pathlen);
- link[pathlen] = '\0';
diff --git a/grsecurity/Kconfig b/grsecurity/Kconfig
new file mode 100644
index 0000000..9629731
@@ -62928,32 +61257,6 @@ index 0000000..33f4af8
+};
+
+#endif
-diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
-index acdc370..b522370 100644
---- a/include/linux/nfs_fs.h
-+++ b/include/linux/nfs_fs.h
-@@ -410,9 +410,6 @@ extern const struct inode_operations nfs_file_inode_operations;
- extern const struct inode_operations nfs3_file_inode_operations;
- #endif /* CONFIG_NFS_V3 */
- extern const struct file_operations nfs_file_operations;
--#ifdef CONFIG_NFS_V4
--extern const struct file_operations nfs4_file_operations;
--#endif /* CONFIG_NFS_V4 */
- extern const struct address_space_operations nfs_file_aops;
- extern const struct address_space_operations nfs_dir_aops;
-
-diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
-index 0012fc3..be2eba7 100644
---- a/include/linux/nfs_xdr.h
-+++ b/include/linux/nfs_xdr.h
-@@ -1149,7 +1149,6 @@ struct nfs_rpc_ops {
- const struct dentry_operations *dentry_ops;
- const struct inode_operations *dir_inode_ops;
- const struct inode_operations *file_inode_ops;
-- const struct file_operations *file_ops;
-
- int (*getroot) (struct nfs_server *, struct nfs_fh *,
- struct nfs_fsinfo *);
diff --git a/include/linux/of_pdt.h b/include/linux/of_pdt.h
index c65a18a..0c05f3a 100644
--- a/include/linux/of_pdt.h
@@ -66638,19 +64941,6 @@ index a9205e3..1c6f5c0 100644
{
hrtimer_peek_ahead_timers();
}
-diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c
-index b5f4742..aa57d5d 100644
---- a/kernel/irq/spurious.c
-+++ b/kernel/irq/spurious.c
-@@ -115,7 +115,7 @@ static int misrouted_irq(int irq)
- struct irq_desc *desc;
- int i, ok = 0;
-
-- if (atomic_inc_return(&irq_poll_active) != 1)
-+ if (atomic_inc_return(&irq_poll_active) == 1)
- goto out;
-
- irq_poll_cpu = smp_processor_id();
diff --git a/kernel/jump_label.c b/kernel/jump_label.c
index a8ce450..5519bce 100644
--- a/kernel/jump_label.c
@@ -76207,46 +74497,6 @@ index 8a58e8c..8b5e631 100644
__sk_dst_reset(sk);
dst = NULL;
}
-diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
-index 848e494..36c2842 100644
---- a/net/ipv6/ip6_tunnel.c
-+++ b/net/ipv6/ip6_tunnel.c
-@@ -289,8 +289,6 @@ static struct ip6_tnl *ip6_tnl_create(struct net *net, struct ip6_tnl_parm *p)
- if ((err = register_netdevice(dev)) < 0)
- goto failed_free;
-
-- strcpy(t->parms.name, dev->name);
--
- dev_hold(dev);
- ip6_tnl_link(ip6n, t);
- return t;
-@@ -1399,6 +1397,7 @@ ip6_tnl_dev_init_gen(struct net_device *dev)
- struct ip6_tnl *t = netdev_priv(dev);
-
- t->dev = dev;
-+ strcpy(t->parms.name, dev->name);
- dev->tstats = alloc_percpu(struct pcpu_tstats);
- if (!dev->tstats)
- return -ENOMEM;
-@@ -1478,7 +1477,6 @@ static void __net_exit ip6_tnl_destroy_tunnels(struct ip6_tnl_net *ip6n)
- static int __net_init ip6_tnl_init_net(struct net *net)
- {
- struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
-- struct ip6_tnl *t = NULL;
- int err;
-
- ip6n->tnls[0] = ip6n->tnls_wc;
-@@ -1499,10 +1497,6 @@ static int __net_init ip6_tnl_init_net(struct net *net)
- err = register_netdev(ip6n->fb_tnl_dev);
- if (err < 0)
- goto err_register;
--
-- t = netdev_priv(ip6n->fb_tnl_dev);
--
-- strcpy(t->parms.name, ip6n->fb_tnl_dev->name);
- return 0;
-
- err_register:
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index 147ede38..fb01709 100644
--- a/net/ipv6/ipv6_sockglue.c
@@ -76959,61 +75209,11 @@ index 4851e9e..d860e05 100644
return -EFAULT;
return p;
-diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
-index 378bd67..7fa8c6b 100644
---- a/net/mac80211/rx.c
-+++ b/net/mac80211/rx.c
-@@ -140,9 +140,8 @@ ieee80211_add_rx_radiotap_header(struct ieee80211_local *local,
- pos++;
-
- /* IEEE80211_RADIOTAP_RATE */
-- if (!rate || status->flag & RX_FLAG_HT) {
-+ if (status->flag & RX_FLAG_HT) {
- /*
-- * Without rate information don't add it. If we have,
- * MCS information is a separate field in radiotap,
- * added below. The byte here is needed as padding
- * for the channel though, so initialise it to 0.
-@@ -163,14 +162,12 @@ ieee80211_add_rx_radiotap_header(struct ieee80211_local *local,
- else if (status->flag & RX_FLAG_HT)
- put_unaligned_le16(IEEE80211_CHAN_DYN | IEEE80211_CHAN_2GHZ,
- pos);
-- else if (rate && rate->flags & IEEE80211_RATE_ERP_G)
-+ else if (rate->flags & IEEE80211_RATE_ERP_G)
- put_unaligned_le16(IEEE80211_CHAN_OFDM | IEEE80211_CHAN_2GHZ,
- pos);
-- else if (rate)
-+ else
- put_unaligned_le16(IEEE80211_CHAN_CCK | IEEE80211_CHAN_2GHZ,
- pos);
-- else
-- put_unaligned_le16(IEEE80211_CHAN_2GHZ, pos);
- pos += 2;
-
- /* IEEE80211_RADIOTAP_DBM_ANTSIGNAL */
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
-index 2124db8..0affe0d 100644
+index d3fe2d2..0affe0d 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
-@@ -1047,8 +1047,6 @@ struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata,
- skb = ieee80211_probereq_get(&local->hw, &sdata->vif,
- ssid, ssid_len,
- buf, buf_len);
-- if (!skb)
-- goto out;
-
- if (dst) {
- mgmt = (struct ieee80211_mgmt *) skb->data;
-@@ -1057,8 +1055,6 @@ struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata,
- }
-
- IEEE80211_SKB_CB(skb)->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT;
--
-- out:
- kfree(buf);
-
- return skb;
-@@ -1151,7 +1147,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
+@@ -1147,7 +1147,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
#endif
/* restart hardware */
@@ -78626,34 +76826,6 @@ index a570ff9..d209909 100644
struct rfkill *rfkill;
struct work_struct rfkill_sync;
-diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
-index 3dac76f..1ac9443 100644
---- a/net/wireless/nl80211.c
-+++ b/net/wireless/nl80211.c
-@@ -126,7 +126,8 @@ static const struct nla_policy nl80211_policy[NL80211_ATTR_MAX+1] = {
- [NL80211_ATTR_MESH_CONFIG] = { .type = NLA_NESTED },
- [NL80211_ATTR_SUPPORT_MESH_AUTH] = { .type = NLA_FLAG },
-
-- [NL80211_ATTR_HT_CAPABILITY] = { .len = NL80211_HT_CAPABILITY_LEN },
-+ [NL80211_ATTR_HT_CAPABILITY] = { .type = NLA_BINARY,
-+ .len = NL80211_HT_CAPABILITY_LEN },
-
- [NL80211_ATTR_MGMT_SUBTYPE] = { .type = NLA_U8 },
- [NL80211_ATTR_IE] = { .type = NLA_BINARY,
-diff --git a/net/wireless/reg.c b/net/wireless/reg.c
-index 213103e..379574c 100644
---- a/net/wireless/reg.c
-+++ b/net/wireless/reg.c
-@@ -2254,9 +2254,6 @@ void /* __init_or_exit */ regulatory_exit(void)
-
- kfree(last_request);
-
-- last_request = NULL;
-- dev_set_uevent_suppress(&reg_pdev->dev, true);
--
- platform_device_unregister(reg_pdev);
-
- spin_lock_bh(&reg_pending_beacons_lock);
diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c
index fdbc23c..212d53e 100644
--- a/net/wireless/wext-core.c