diff options
-rw-r--r-- | main/dahdi-linux-grsec/APKBUILD | 2 | ||||
-rw-r--r-- | main/linux-grsec/APKBUILD | 4 | ||||
-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 | ||||
-rw-r--r-- | main/open-iscsi-grsec/APKBUILD | 4 | ||||
-rw-r--r-- | main/open-iscsi-grsec/Makefile-Alpine-kernels-support.patch | 2 | ||||
-rw-r--r-- | main/open-vm-tools-grsec/APKBUILD | 2 | ||||
-rw-r--r-- | main/xtables-addons-grsec/APKBUILD | 2 |
7 files changed, 44 insertions, 1872 deletions
diff --git a/main/dahdi-linux-grsec/APKBUILD b/main/dahdi-linux-grsec/APKBUILD index 618ee6957..d807fe25c 100644 --- a/main/dahdi-linux-grsec/APKBUILD +++ b/main/dahdi-linux-grsec/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Timo Teras <timo.teras@iki.fi> _flavor=grsec -_kver=3.0.12 +_kver=3.0.10 _kpkgrel=0 _mypkgrel=0 diff --git a/main/linux-grsec/APKBUILD b/main/linux-grsec/APKBUILD index 771757958..7b0261f04 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 9b60ce0c3..ad5496b8f 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(®_pdev->dev, true); -- - platform_device_unregister(reg_pdev); - - spin_lock_bh(®_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 diff --git a/main/open-iscsi-grsec/APKBUILD b/main/open-iscsi-grsec/APKBUILD index 93de6e8e0..f9bfce081 100644 --- a/main/open-iscsi-grsec/APKBUILD +++ b/main/open-iscsi-grsec/APKBUILD @@ -3,7 +3,7 @@ _flavor=grsec _realname=open-iscsi _realver=2.0-872 -_kver=3.0.12 +_kver=3.0.10 _kpkgrel=0 # verify the kernel version before entering chroot @@ -56,4 +56,4 @@ package() { } md5sums="b4df94f08c241352bb964043b3e44779 open-iscsi-2.0-872.tar.gz -7fc6493815ac899da83db3197e25d0b9 Makefile-Alpine-kernels-support.patch" +c28dfb108cec0399634d348132cee79a Makefile-Alpine-kernels-support.patch" diff --git a/main/open-iscsi-grsec/Makefile-Alpine-kernels-support.patch b/main/open-iscsi-grsec/Makefile-Alpine-kernels-support.patch index 8308ba590..95e9c9573 100644 --- a/main/open-iscsi-grsec/Makefile-Alpine-kernels-support.patch +++ b/main/open-iscsi-grsec/Makefile-Alpine-kernels-support.patch @@ -26,7 +26,7 @@ linux_2_6_35: $(unpatch_code) + -+linux_3_0_12: $(unpatch_code) ++linux_3_0_10: $(unpatch_code) do_unpatch_code: echo "Un-patching source code for use with linux-2.6.14 and up ..." diff --git a/main/open-vm-tools-grsec/APKBUILD b/main/open-vm-tools-grsec/APKBUILD index 339b67d07..133b3b783 100644 --- a/main/open-vm-tools-grsec/APKBUILD +++ b/main/open-vm-tools-grsec/APKBUILD @@ -6,7 +6,7 @@ _mypkgrel=0 _realver=2011.09.23 _realsubver=491607 -_kver=3.0.12 +_kver=3.0.10 _kpkgrel=0 # source open-vm-tools version diff --git a/main/xtables-addons-grsec/APKBUILD b/main/xtables-addons-grsec/APKBUILD index eec3eeff5..20738ab03 100644 --- a/main/xtables-addons-grsec/APKBUILD +++ b/main/xtables-addons-grsec/APKBUILD @@ -3,7 +3,7 @@ _flavor=${FLAVOR:-grsec} _realname=xtables-addons _name=$_realname-$_flavor -_kver=3.0.12 +_kver=3.0.10 _kpkgrel=0 # source the kernel version |