]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.36 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Fri, 3 Dec 2010 21:02:45 +0000 (13:02 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 3 Dec 2010 21:02:45 +0000 (13:02 -0800)
queue-2.6.36/alsa-hda-use-hp-laptop-quirk-to-enable-headphones-automute-for-asus-a52j.patch [new file with mode: 0644]
queue-2.6.36/drm-i915-die-i915_probe_agp-die.patch [deleted file]
queue-2.6.36/reiserfs-don-t-acquire-lock-recursively-in-reiserfs_acl_chmod.patch [new file with mode: 0644]
queue-2.6.36/reiserfs-fix-inode-mutex-reiserfs-lock-misordering.patch [new file with mode: 0644]
queue-2.6.36/series
queue-2.6.36/staging-asus_oled-fix-up-my-fixup-for-some-sysfs-attribute-permissions.patch [new file with mode: 0644]
queue-2.6.36/staging-asus_oled-fix-up-some-sysfs-attribute-permissions.patch [new file with mode: 0644]
queue-2.6.36/staging-line6-fix-up-some-sysfs-attribute-permissions.patch [new file with mode: 0644]
queue-2.6.36/staging-rt2870-add-new-usb-id-for-belkin-f6d4050-v1.patch [new file with mode: 0644]

diff --git a/queue-2.6.36/alsa-hda-use-hp-laptop-quirk-to-enable-headphones-automute-for-asus-a52j.patch b/queue-2.6.36/alsa-hda-use-hp-laptop-quirk-to-enable-headphones-automute-for-asus-a52j.patch
new file mode 100644 (file)
index 0000000..afa5c8f
--- /dev/null
@@ -0,0 +1,36 @@
+From 673f7a8984c3a9e2cb1108ce221da1ebbd9e5d09 Mon Sep 17 00:00:00 2001
+From: Daniel T Chen <crimsun@ubuntu.com>
+Date: Sun, 21 Nov 2010 14:01:14 -0500
+Subject: ALSA: hda: Use hp-laptop quirk to enable headphones automute for Asus A52J
+
+From: Daniel T Chen <crimsun@ubuntu.com>
+
+commit 673f7a8984c3a9e2cb1108ce221da1ebbd9e5d09 upstream.
+
+BugLink: https://launchpad.net/bugs/677652
+
+The original reporter states that, in 2.6.35, headphones do not appear
+to work, nor does inserting them mute the A52J's onboard speakers.  Upon
+inspecting the codec dump, it appears that the newly committed hp-laptop
+quirk will suffice to enable this basic functionality.  Testing was done
+with an alsa-driver build from 2010-11-21.
+
+Reported-and-tested-by: Joan Creus
+Signed-off-by: Daniel T Chen <crimsun@ubuntu.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_conexant.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_conexant.c
++++ b/sound/pci/hda/patch_conexant.c
+@@ -3092,6 +3092,7 @@ static struct snd_pci_quirk cxt5066_cfg_
+       SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTO),
+       SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD),
+       SND_PCI_QUIRK(0x103c, 0x360b, "HP G60", CXT5066_HP_LAPTOP),
++      SND_PCI_QUIRK(0x1043, 0x13f3, "Asus A52J", CXT5066_HP_LAPTOP),
+       SND_PCI_QUIRK(0x1179, 0xff1e, "Toshiba Satellite C650D", CXT5066_IDEAPAD),
+       SND_PCI_QUIRK(0x1179, 0xff50, "Toshiba Satellite P500-PSPGSC-01800T", CXT5066_OLPC_XO_1_5),
+       SND_PCI_QUIRK(0x1179, 0xffe0, "Toshiba Satellite Pro T130-15F", CXT5066_OLPC_XO_1_5),
diff --git a/queue-2.6.36/drm-i915-die-i915_probe_agp-die.patch b/queue-2.6.36/drm-i915-die-i915_probe_agp-die.patch
deleted file mode 100644 (file)
index e689b0e..0000000
+++ /dev/null
@@ -1,315 +0,0 @@
-From 19966754328d99ee003ddfc7a8c31ceb115483ac Mon Sep 17 00:00:00 2001
-From: Daniel Vetter <daniel.vetter@ffwll.ch>
-Date: Mon, 6 Sep 2010 20:08:44 +0200
-Subject: drm/i915: die, i915_probe_agp, die
-
-From: Daniel Vetter <daniel.vetter@ffwll.ch>
-
-commit 19966754328d99ee003ddfc7a8c31ceb115483ac upstream.
-
-Use the detection from intel-gtt.ko instead. Hooray!
-
-Also move the stolen mem allocator to the other gtt stuff in dev_prv->mem.
-
-v2: Chris Wilson noted that my error handling was crap. Fix it. He also
-said that this fixes a problem on his i845. Indeed, i915_probe_agp
-misses a special case for i830/i845 stolen mem detection.
-
-Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=25476
-Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
-index 6eb64c1..9cb7c98 100644
---- a/drivers/char/agp/intel-gtt.c
-+++ b/drivers/char/agp/intel-gtt.c
-@@ -1714,6 +1714,12 @@ int intel_gmch_probe(struct pci_dev *pdev,
- }
- EXPORT_SYMBOL(intel_gmch_probe);
-+struct intel_gtt *intel_gtt_get(void)
-+{
-+      return &intel_private.base;
-+}
-+EXPORT_SYMBOL(intel_gtt_get);
-+
- void intel_gmch_remove(struct pci_dev *pdev)
- {
-       if (intel_private.pcidev)
-diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
-index a693b27..428c75b 100644
---- a/drivers/gpu/drm/i915/i915_dma.c
-+++ b/drivers/gpu/drm/i915/i915_dma.c
-@@ -989,172 +989,6 @@ intel_teardown_mchbar(struct drm_device *dev)
-               release_resource(&dev_priv->mch_res);
- }
--/**
-- * i915_probe_agp - get AGP bootup configuration
-- * @pdev: PCI device
-- * @aperture_size: returns AGP aperture configured size
-- * @preallocated_size: returns size of BIOS preallocated AGP space
-- *
-- * Since Intel integrated graphics are UMA, the BIOS has to set aside
-- * some RAM for the framebuffer at early boot.  This code figures out
-- * how much was set aside so we can use it for our own purposes.
-- */
--static int i915_probe_agp(struct drm_device *dev, uint32_t *aperture_size,
--                        uint32_t *preallocated_size)
--{
--      struct drm_i915_private *dev_priv = dev->dev_private;
--      u16 tmp = 0;
--      unsigned long overhead;
--      unsigned long stolen;
--
--      /* Get the fb aperture size and "stolen" memory amount. */
--      pci_read_config_word(dev_priv->bridge_dev, INTEL_GMCH_CTRL, &tmp);
--
--      *aperture_size = 1024 * 1024;
--      *preallocated_size = 1024 * 1024;
--
--      switch (dev->pdev->device) {
--      case PCI_DEVICE_ID_INTEL_82830_CGC:
--      case PCI_DEVICE_ID_INTEL_82845G_IG:
--      case PCI_DEVICE_ID_INTEL_82855GM_IG:
--      case PCI_DEVICE_ID_INTEL_82865_IG:
--              if ((tmp & INTEL_GMCH_MEM_MASK) == INTEL_GMCH_MEM_64M)
--                      *aperture_size *= 64;
--              else
--                      *aperture_size *= 128;
--              break;
--      default:
--              /* 9xx supports large sizes, just look at the length */
--              *aperture_size = pci_resource_len(dev->pdev, 2);
--              break;
--      }
--
--      /*
--       * Some of the preallocated space is taken by the GTT
--       * and popup.  GTT is 1K per MB of aperture size, and popup is 4K.
--       */
--      if (IS_G4X(dev) || IS_PINEVIEW(dev) || IS_IRONLAKE(dev) || IS_GEN6(dev))
--              overhead = 4096;
--      else
--              overhead = (*aperture_size / 1024) + 4096;
--
--      if (IS_GEN6(dev)) {
--              /* SNB has memory control reg at 0x50.w */
--              pci_read_config_word(dev->pdev, SNB_GMCH_CTRL, &tmp);
--
--              switch (tmp & SNB_GMCH_GMS_STOLEN_MASK) {
--              case INTEL_855_GMCH_GMS_DISABLED:
--                      DRM_ERROR("video memory is disabled\n");
--                      return -1;
--              case SNB_GMCH_GMS_STOLEN_32M:
--                      stolen = 32 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_64M:
--                      stolen = 64 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_96M:
--                      stolen = 96 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_128M:
--                      stolen = 128 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_160M:
--                      stolen = 160 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_192M:
--                      stolen = 192 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_224M:
--                      stolen = 224 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_256M:
--                      stolen = 256 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_288M:
--                      stolen = 288 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_320M:
--                      stolen = 320 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_352M:
--                      stolen = 352 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_384M:
--                      stolen = 384 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_416M:
--                      stolen = 416 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_448M:
--                      stolen = 448 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_480M:
--                      stolen = 480 * 1024 * 1024;
--                      break;
--              case SNB_GMCH_GMS_STOLEN_512M:
--                      stolen = 512 * 1024 * 1024;
--                      break;
--              default:
--                      DRM_ERROR("unexpected GMCH_GMS value: 0x%02x\n",
--                                tmp & SNB_GMCH_GMS_STOLEN_MASK);
--                      return -1;
--              }
--      } else {
--              switch (tmp & INTEL_GMCH_GMS_MASK) {
--              case INTEL_855_GMCH_GMS_DISABLED:
--                      DRM_ERROR("video memory is disabled\n");
--                      return -1;
--              case INTEL_855_GMCH_GMS_STOLEN_1M:
--                      stolen = 1 * 1024 * 1024;
--                      break;
--              case INTEL_855_GMCH_GMS_STOLEN_4M:
--                      stolen = 4 * 1024 * 1024;
--                      break;
--              case INTEL_855_GMCH_GMS_STOLEN_8M:
--                      stolen = 8 * 1024 * 1024;
--                      break;
--              case INTEL_855_GMCH_GMS_STOLEN_16M:
--                      stolen = 16 * 1024 * 1024;
--                      break;
--              case INTEL_855_GMCH_GMS_STOLEN_32M:
--                      stolen = 32 * 1024 * 1024;
--                      break;
--              case INTEL_915G_GMCH_GMS_STOLEN_48M:
--                      stolen = 48 * 1024 * 1024;
--                      break;
--              case INTEL_915G_GMCH_GMS_STOLEN_64M:
--                      stolen = 64 * 1024 * 1024;
--                      break;
--              case INTEL_GMCH_GMS_STOLEN_128M:
--                      stolen = 128 * 1024 * 1024;
--                      break;
--              case INTEL_GMCH_GMS_STOLEN_256M:
--                      stolen = 256 * 1024 * 1024;
--                      break;
--              case INTEL_GMCH_GMS_STOLEN_96M:
--                      stolen = 96 * 1024 * 1024;
--                      break;
--              case INTEL_GMCH_GMS_STOLEN_160M:
--                      stolen = 160 * 1024 * 1024;
--                      break;
--              case INTEL_GMCH_GMS_STOLEN_224M:
--                      stolen = 224 * 1024 * 1024;
--                      break;
--              case INTEL_GMCH_GMS_STOLEN_352M:
--                      stolen = 352 * 1024 * 1024;
--                      break;
--              default:
--                      DRM_ERROR("unexpected GMCH_GMS value: 0x%02x\n",
--                                tmp & INTEL_GMCH_GMS_MASK);
--                      return -1;
--              }
--      }
--
--      *preallocated_size = stolen - overhead;
--
--      return 0;
--}
--
- #define PTE_ADDRESS_MASK              0xfffff000
- #define PTE_ADDRESS_MASK_HIGH         0x000000f0 /* i915+ */
- #define PTE_MAPPING_TYPE_UNCACHED     (0 << 1)
-@@ -1249,7 +1083,7 @@ static void i915_setup_compression(struct drm_device *dev, int size)
-       unsigned long ll_base = 0;
-       /* Leave 1M for line length buffer & misc. */
--      compressed_fb = drm_mm_search_free(&dev_priv->vram, size, 4096, 0);
-+      compressed_fb = drm_mm_search_free(&dev_priv->mm.vram, size, 4096, 0);
-       if (!compressed_fb) {
-               dev_priv->no_fbc_reason = FBC_STOLEN_TOO_SMALL;
-               i915_warn_stolen(dev);
-@@ -1270,7 +1104,7 @@ static void i915_setup_compression(struct drm_device *dev, int size)
-       }
-       if (!(IS_GM45(dev) || IS_IRONLAKE_M(dev))) {
--              compressed_llb = drm_mm_search_free(&dev_priv->vram, 4096,
-+              compressed_llb = drm_mm_search_free(&dev_priv->mm.vram, 4096,
-                                                   4096, 0);
-               if (!compressed_llb) {
-                       i915_warn_stolen(dev);
-@@ -1366,8 +1200,8 @@ static int i915_load_modeset_init(struct drm_device *dev,
-       struct drm_i915_private *dev_priv = dev->dev_private;
-       int ret = 0;
--      /* Basic memrange allocator for stolen space (aka vram) */
--      drm_mm_init(&dev_priv->vram, 0, prealloc_size);
-+      /* Basic memrange allocator for stolen space (aka mm.vram) */
-+      drm_mm_init(&dev_priv->mm.vram, 0, prealloc_size);
-       DRM_INFO("set up %ldM of stolen space\n", prealloc_size / (1024*1024));
-       /* We're off and running w/KMS */
-@@ -2107,16 +1941,16 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
-                        "performance may suffer.\n");
-       }
--      ret = i915_probe_agp(dev, &agp_size, &prealloc_size);
--      if (ret)
-+      dev_priv->mm.gtt = intel_gtt_get();
-+      if (!dev_priv->mm.gtt) {
-+              DRM_ERROR("Failed to initialize GTT\n");
-+              ret = -ENODEV;
-               goto out_iomapfree;
--
--      if (prealloc_size > intel_max_stolen) {
--              DRM_INFO("detected %dM stolen memory, trimming to %dM\n",
--                       prealloc_size >> 20, intel_max_stolen >> 20);
--              prealloc_size = intel_max_stolen;
-       }
-+      prealloc_size = dev_priv->mm.gtt->gtt_stolen_entries << PAGE_SHIFT;
-+      agp_size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT;
-+
-       dev_priv->wq = create_singlethread_workqueue("i915");
-       if (dev_priv->wq == NULL) {
-               DRM_ERROR("Failed to create our workqueue.\n");
-@@ -2301,7 +2135,7 @@ int i915_driver_unload(struct drm_device *dev)
-               mutex_unlock(&dev->struct_mutex);
-               if (I915_HAS_FBC(dev) && i915_powersave)
-                       i915_cleanup_compression(dev);
--              drm_mm_takedown(&dev_priv->vram);
-+              drm_mm_takedown(&dev_priv->mm.vram);
-               intel_cleanup_overlay(dev);
-       }
-diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
-index d825ef2..c8b2200 100644
---- a/drivers/gpu/drm/i915/i915_drv.h
-+++ b/drivers/gpu/drm/i915/i915_drv.h
-@@ -305,8 +305,6 @@ typedef struct drm_i915_private {
-       uint32_t last_instdone;
-       uint32_t last_instdone1;
--      struct drm_mm vram;
--
-       unsigned long cfb_size;
-       unsigned long cfb_pitch;
-       int cfb_fence;
-@@ -511,6 +509,11 @@ typedef struct drm_i915_private {
-       u32 saveMCHBAR_RENDER_STANDBY;
-       struct {
-+              /** Bridge to intel-gtt-ko */
-+              struct intel_gtt *gtt;
-+              /** Memory allocator for GTT stolen memory */
-+              struct drm_mm vram;
-+              /** Memory allocator for GTT */
-               struct drm_mm gtt_space;
-               struct io_mapping *gtt_mapping;
-diff --git a/include/drm/intel-gtt.h b/include/drm/intel-gtt.h
-index 6769cb7..b3aa7ab 100644
---- a/include/drm/intel-gtt.h
-+++ b/include/drm/intel-gtt.h
-@@ -14,5 +14,7 @@ struct intel_gtt {
-       unsigned int gtt_mappable_entries;
- };
-+struct intel_gtt *intel_gtt_get(void);
-+
- #endif
diff --git a/queue-2.6.36/reiserfs-don-t-acquire-lock-recursively-in-reiserfs_acl_chmod.patch b/queue-2.6.36/reiserfs-don-t-acquire-lock-recursively-in-reiserfs_acl_chmod.patch
new file mode 100644 (file)
index 0000000..fdcb27f
--- /dev/null
@@ -0,0 +1,51 @@
+From 238af8751f64a75f8b638193353b1c31ea32e738 Mon Sep 17 00:00:00 2001
+From: Frederic Weisbecker <fweisbec@gmail.com>
+Date: Thu, 2 Dec 2010 14:31:16 -0800
+Subject: reiserfs: don't acquire lock recursively in reiserfs_acl_chmod
+
+From: Frederic Weisbecker <fweisbec@gmail.com>
+
+commit 238af8751f64a75f8b638193353b1c31ea32e738 upstream.
+
+reiserfs_acl_chmod() can be called by reiserfs_set_attr() and then take
+the reiserfs lock a second time.  Thereafter it may call journal_begin()
+that definitely requires the lock not to be nested in order to release
+it before taking the journal mutex because the reiserfs lock depends on
+the journal mutex already.
+
+So, aviod nesting the lock in reiserfs_acl_chmod().
+
+Reported-by: Pawel Zawora <pzawora@gmail.com>
+Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
+Tested-by: Pawel Zawora <pzawora@gmail.com>
+Cc: Jeff Mahoney <jeffm@suse.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/reiserfs/xattr_acl.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/fs/reiserfs/xattr_acl.c
++++ b/fs/reiserfs/xattr_acl.c
+@@ -472,7 +472,9 @@ int reiserfs_acl_chmod(struct inode *ino
+               struct reiserfs_transaction_handle th;
+               size_t size = reiserfs_xattr_nblocks(inode,
+                                            reiserfs_acl_size(clone->a_count));
+-              reiserfs_write_lock(inode->i_sb);
++              int depth;
++
++              depth = reiserfs_write_lock_once(inode->i_sb);
+               error = journal_begin(&th, inode->i_sb, size * 2);
+               if (!error) {
+                       int error2;
+@@ -482,7 +484,7 @@ int reiserfs_acl_chmod(struct inode *ino
+                       if (error2)
+                               error = error2;
+               }
+-              reiserfs_write_unlock(inode->i_sb);
++              reiserfs_write_unlock_once(inode->i_sb, depth);
+       }
+       posix_acl_release(clone);
+       return error;
diff --git a/queue-2.6.36/reiserfs-fix-inode-mutex-reiserfs-lock-misordering.patch b/queue-2.6.36/reiserfs-fix-inode-mutex-reiserfs-lock-misordering.patch
new file mode 100644 (file)
index 0000000..e002684
--- /dev/null
@@ -0,0 +1,50 @@
+From da905873effecd1c0166e578bc4b5006f041b18b Mon Sep 17 00:00:00 2001
+From: Frederic Weisbecker <fweisbec@gmail.com>
+Date: Wed, 24 Nov 2010 12:57:15 -0800
+Subject: reiserfs: fix inode mutex - reiserfs lock misordering
+
+From: Frederic Weisbecker <fweisbec@gmail.com>
+
+commit da905873effecd1c0166e578bc4b5006f041b18b upstream.
+
+reiserfs_unpack() locks the inode mutex with reiserfs_mutex_lock_safe()
+to protect against reiserfs lock dependency.  However this protection
+requires to have the reiserfs lock to be locked.
+
+This is the case if reiserfs_unpack() is called by reiserfs_ioctl but
+not from reiserfs_quota_on() when it tries to unpack tails of quota
+files.
+
+Fix the ordering of the two locks in reiserfs_unpack() to fix this
+issue.
+
+Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
+Reported-by: Markus Gapp <markus.gapp@gmx.net>
+Reported-by: Jan Kara <jack@suse.cz>
+Cc: Jeff Mahoney <jeffm@suse.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/reiserfs/ioctl.c |    7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+--- a/fs/reiserfs/ioctl.c
++++ b/fs/reiserfs/ioctl.c
+@@ -186,12 +186,11 @@ int reiserfs_unpack(struct inode *inode,
+               return 0;
+       }
+-      /* we need to make sure nobody is changing the file size beneath
+-       ** us
+-       */
+-      reiserfs_mutex_lock_safe(&inode->i_mutex, inode->i_sb);
+       depth = reiserfs_write_lock_once(inode->i_sb);
++      /* we need to make sure nobody is changing the file size beneath us */
++      reiserfs_mutex_lock_safe(&inode->i_mutex, inode->i_sb);
++
+       write_from = inode->i_size & (blocksize - 1);
+       /* if we are on a block boundary, we are already unpacked.  */
+       if (write_from == 0) {
index d7db0c77b91368a382660d63d37deb12603e4289..9b27d8e6e4972c0ac69f72366e2c980c93b53832 100644 (file)
@@ -90,4 +90,10 @@ drm-i915-diasable-clock-gating-for-the-panel-power-sequencer.patch
 drm-i915-overlay-ensure-that-the-reg_bo-is-in-the-gtt-prior-to-writing.patch
 pcnet_cs-add-new_id.patch
 sh-add-missing-consts-to-sys_execve-declaration.patch
-drm-i915-die-i915_probe_agp-die.patch
+reiserfs-fix-inode-mutex-reiserfs-lock-misordering.patch
+reiserfs-don-t-acquire-lock-recursively-in-reiserfs_acl_chmod.patch
+staging-rt2870-add-new-usb-id-for-belkin-f6d4050-v1.patch
+staging-asus_oled-fix-up-some-sysfs-attribute-permissions.patch
+staging-asus_oled-fix-up-my-fixup-for-some-sysfs-attribute-permissions.patch
+alsa-hda-use-hp-laptop-quirk-to-enable-headphones-automute-for-asus-a52j.patch
+staging-line6-fix-up-some-sysfs-attribute-permissions.patch
diff --git a/queue-2.6.36/staging-asus_oled-fix-up-my-fixup-for-some-sysfs-attribute-permissions.patch b/queue-2.6.36/staging-asus_oled-fix-up-my-fixup-for-some-sysfs-attribute-permissions.patch
new file mode 100644 (file)
index 0000000..62373e2
--- /dev/null
@@ -0,0 +1,40 @@
+From 515b4987ccd097cdf5416530b05fdf9e01afe95a Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@suse.de>
+Date: Thu, 18 Nov 2010 11:21:04 -0800
+Subject: Staging: asus_oled: fix up my fixup for some sysfs attribute permissions
+
+From: Greg Kroah-Hartman <gregkh@suse.de>
+
+commit 515b4987ccd097cdf5416530b05fdf9e01afe95a upstream.
+
+They should be writable by root, not readable.
+Doh, stupid me with the wrong flags.
+
+Reported-by: Jonathan Cameron <jic23@cam.ac.uk>
+Cc: Jakub Schmidtke <sjakub@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/asus_oled/asus_oled.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/staging/asus_oled/asus_oled.c
++++ b/drivers/staging/asus_oled/asus_oled.c
+@@ -620,13 +620,13 @@ static ssize_t class_set_picture(struct
+ #define ASUS_OLED_DEVICE_ATTR(_file)          dev_attr_asus_oled_##_file
+-static DEVICE_ATTR(asus_oled_enabled, S_IRUSR | S_IRUGO,
++static DEVICE_ATTR(asus_oled_enabled, S_IWUSR | S_IRUGO,
+                  get_enabled, set_enabled);
+-static DEVICE_ATTR(asus_oled_picture, S_IRUSR , NULL, set_picture);
++static DEVICE_ATTR(asus_oled_picture, S_IWUSR , NULL, set_picture);
+-static DEVICE_ATTR(enabled, S_IRUSR | S_IRUGO,
++static DEVICE_ATTR(enabled, S_IWUSR | S_IRUGO,
+                  class_get_enabled, class_set_enabled);
+-static DEVICE_ATTR(picture, S_IRUSR, NULL, class_set_picture);
++static DEVICE_ATTR(picture, S_IWUSR, NULL, class_set_picture);
+ static int asus_oled_probe(struct usb_interface *interface,
+                          const struct usb_device_id *id)
diff --git a/queue-2.6.36/staging-asus_oled-fix-up-some-sysfs-attribute-permissions.patch b/queue-2.6.36/staging-asus_oled-fix-up-some-sysfs-attribute-permissions.patch
new file mode 100644 (file)
index 0000000..7fd9ea9
--- /dev/null
@@ -0,0 +1,39 @@
+From 590b0b9754bd8928926bae7194b6da7ead9bda3b Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@suse.de>
+Date: Tue, 16 Nov 2010 11:17:01 -0800
+Subject: Staging: asus_oled: fix up some sysfs attribute permissions
+
+From: Greg Kroah-Hartman <gregkh@suse.de>
+
+commit 590b0b9754bd8928926bae7194b6da7ead9bda3b upstream.
+
+They should not be writable by any user
+
+Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Jakub Schmidtke <sjakub@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/asus_oled/asus_oled.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/staging/asus_oled/asus_oled.c
++++ b/drivers/staging/asus_oled/asus_oled.c
+@@ -620,13 +620,13 @@ static ssize_t class_set_picture(struct
+ #define ASUS_OLED_DEVICE_ATTR(_file)          dev_attr_asus_oled_##_file
+-static DEVICE_ATTR(asus_oled_enabled, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(asus_oled_enabled, S_IRUSR | S_IRUGO,
+                  get_enabled, set_enabled);
+-static DEVICE_ATTR(asus_oled_picture, S_IWUGO , NULL, set_picture);
++static DEVICE_ATTR(asus_oled_picture, S_IRUSR , NULL, set_picture);
+-static DEVICE_ATTR(enabled, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(enabled, S_IRUSR | S_IRUGO,
+                  class_get_enabled, class_set_enabled);
+-static DEVICE_ATTR(picture, S_IWUGO, NULL, class_set_picture);
++static DEVICE_ATTR(picture, S_IRUSR, NULL, class_set_picture);
+ static int asus_oled_probe(struct usb_interface *interface,
+                          const struct usb_device_id *id)
diff --git a/queue-2.6.36/staging-line6-fix-up-some-sysfs-attribute-permissions.patch b/queue-2.6.36/staging-line6-fix-up-some-sysfs-attribute-permissions.patch
new file mode 100644 (file)
index 0000000..5ad7c88
--- /dev/null
@@ -0,0 +1,446 @@
+From 2018845b6a169f75341f8e68ad1089cb6697cf24 Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@suse.de>
+Date: Tue, 16 Nov 2010 11:23:33 -0800
+Subject: Staging: line6: fix up some sysfs attribute permissions
+
+From: Greg Kroah-Hartman <gregkh@suse.de>
+
+commit 2018845b6a169f75341f8e68ad1089cb6697cf24 and
+2018845b6a169f75341f8e68ad1089cb6697cf24 upstream merged together as it
+had to be backported by hand.
+
+They should not be writable by any user
+
+Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Markus Grabner <grabner@icg.tugraz.at>
+Cc: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/line6/control.c  |  204 +++++++++++++++++++--------------------
+ drivers/staging/line6/midi.c     |    4 
+ drivers/staging/line6/pod.c      |   32 +++---
+ drivers/staging/line6/toneport.c |    4 
+ drivers/staging/line6/variax.c   |   12 +-
+ 5 files changed, 128 insertions(+), 128 deletions(-)
+
+--- a/drivers/staging/line6/control.c
++++ b/drivers/staging/line6/control.c
+@@ -268,210 +268,210 @@ VARIAX_PARAM_R(float, mix2);
+ VARIAX_PARAM_R(float, mix1);
+ VARIAX_PARAM_R(int, pickup_wiring);
+-static DEVICE_ATTR(tweak, S_IWUGO | S_IRUGO, pod_get_tweak, pod_set_tweak);
+-static DEVICE_ATTR(wah_position, S_IWUGO | S_IRUGO, pod_get_wah_position,
++static DEVICE_ATTR(tweak, S_IWUSR | S_IRUGO, pod_get_tweak, pod_set_tweak);
++static DEVICE_ATTR(wah_position, S_IWUSR | S_IRUGO, pod_get_wah_position,
+                  pod_set_wah_position);
+-static DEVICE_ATTR(compression_gain, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(compression_gain, S_IWUSR | S_IRUGO,
+                  pod_get_compression_gain, pod_set_compression_gain);
+-static DEVICE_ATTR(vol_pedal_position, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(vol_pedal_position, S_IWUSR | S_IRUGO,
+                  pod_get_vol_pedal_position, pod_set_vol_pedal_position);
+-static DEVICE_ATTR(compression_threshold, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(compression_threshold, S_IWUSR | S_IRUGO,
+                  pod_get_compression_threshold,
+                  pod_set_compression_threshold);
+-static DEVICE_ATTR(pan, S_IWUGO | S_IRUGO, pod_get_pan, pod_set_pan);
+-static DEVICE_ATTR(amp_model_setup, S_IWUGO | S_IRUGO, pod_get_amp_model_setup,
++static DEVICE_ATTR(pan, S_IWUSR | S_IRUGO, pod_get_pan, pod_set_pan);
++static DEVICE_ATTR(amp_model_setup, S_IWUSR | S_IRUGO, pod_get_amp_model_setup,
+                  pod_set_amp_model_setup);
+-static DEVICE_ATTR(amp_model, S_IWUGO | S_IRUGO, pod_get_amp_model,
++static DEVICE_ATTR(amp_model, S_IWUSR | S_IRUGO, pod_get_amp_model,
+                  pod_set_amp_model);
+-static DEVICE_ATTR(drive, S_IWUGO | S_IRUGO, pod_get_drive, pod_set_drive);
+-static DEVICE_ATTR(bass, S_IWUGO | S_IRUGO, pod_get_bass, pod_set_bass);
+-static DEVICE_ATTR(mid, S_IWUGO | S_IRUGO, pod_get_mid, pod_set_mid);
+-static DEVICE_ATTR(lowmid, S_IWUGO | S_IRUGO, pod_get_lowmid, pod_set_lowmid);
+-static DEVICE_ATTR(treble, S_IWUGO | S_IRUGO, pod_get_treble, pod_set_treble);
+-static DEVICE_ATTR(highmid, S_IWUGO | S_IRUGO, pod_get_highmid,
++static DEVICE_ATTR(drive, S_IWUSR | S_IRUGO, pod_get_drive, pod_set_drive);
++static DEVICE_ATTR(bass, S_IWUSR | S_IRUGO, pod_get_bass, pod_set_bass);
++static DEVICE_ATTR(mid, S_IWUSR | S_IRUGO, pod_get_mid, pod_set_mid);
++static DEVICE_ATTR(lowmid, S_IWUSR | S_IRUGO, pod_get_lowmid, pod_set_lowmid);
++static DEVICE_ATTR(treble, S_IWUSR | S_IRUGO, pod_get_treble, pod_set_treble);
++static DEVICE_ATTR(highmid, S_IWUSR | S_IRUGO, pod_get_highmid,
+                  pod_set_highmid);
+-static DEVICE_ATTR(chan_vol, S_IWUGO | S_IRUGO, pod_get_chan_vol,
++static DEVICE_ATTR(chan_vol, S_IWUSR | S_IRUGO, pod_get_chan_vol,
+                  pod_set_chan_vol);
+-static DEVICE_ATTR(reverb_mix, S_IWUGO | S_IRUGO, pod_get_reverb_mix,
++static DEVICE_ATTR(reverb_mix, S_IWUSR | S_IRUGO, pod_get_reverb_mix,
+                  pod_set_reverb_mix);
+-static DEVICE_ATTR(effect_setup, S_IWUGO | S_IRUGO, pod_get_effect_setup,
++static DEVICE_ATTR(effect_setup, S_IWUSR | S_IRUGO, pod_get_effect_setup,
+                  pod_set_effect_setup);
+-static DEVICE_ATTR(band_1_frequency, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(band_1_frequency, S_IWUSR | S_IRUGO,
+                  pod_get_band_1_frequency, pod_set_band_1_frequency);
+-static DEVICE_ATTR(presence, S_IWUGO | S_IRUGO, pod_get_presence,
++static DEVICE_ATTR(presence, S_IWUSR | S_IRUGO, pod_get_presence,
+                  pod_set_presence);
+-static DEVICE_ATTR2(treble__bass, treble, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR2(treble__bass, treble, S_IWUSR | S_IRUGO,
+                   pod_get_treble__bass, pod_set_treble__bass);
+-static DEVICE_ATTR(noise_gate_enable, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(noise_gate_enable, S_IWUSR | S_IRUGO,
+                  pod_get_noise_gate_enable, pod_set_noise_gate_enable);
+-static DEVICE_ATTR(gate_threshold, S_IWUGO | S_IRUGO, pod_get_gate_threshold,
++static DEVICE_ATTR(gate_threshold, S_IWUSR | S_IRUGO, pod_get_gate_threshold,
+                  pod_set_gate_threshold);
+-static DEVICE_ATTR(gate_decay_time, S_IWUGO | S_IRUGO, pod_get_gate_decay_time,
++static DEVICE_ATTR(gate_decay_time, S_IWUSR | S_IRUGO, pod_get_gate_decay_time,
+                  pod_set_gate_decay_time);
+-static DEVICE_ATTR(stomp_enable, S_IWUGO | S_IRUGO, pod_get_stomp_enable,
++static DEVICE_ATTR(stomp_enable, S_IWUSR | S_IRUGO, pod_get_stomp_enable,
+                  pod_set_stomp_enable);
+-static DEVICE_ATTR(comp_enable, S_IWUGO | S_IRUGO, pod_get_comp_enable,
++static DEVICE_ATTR(comp_enable, S_IWUSR | S_IRUGO, pod_get_comp_enable,
+                  pod_set_comp_enable);
+-static DEVICE_ATTR(stomp_time, S_IWUGO | S_IRUGO, pod_get_stomp_time,
++static DEVICE_ATTR(stomp_time, S_IWUSR | S_IRUGO, pod_get_stomp_time,
+                  pod_set_stomp_time);
+-static DEVICE_ATTR(delay_enable, S_IWUGO | S_IRUGO, pod_get_delay_enable,
++static DEVICE_ATTR(delay_enable, S_IWUSR | S_IRUGO, pod_get_delay_enable,
+                  pod_set_delay_enable);
+-static DEVICE_ATTR(mod_param_1, S_IWUGO | S_IRUGO, pod_get_mod_param_1,
++static DEVICE_ATTR(mod_param_1, S_IWUSR | S_IRUGO, pod_get_mod_param_1,
+                  pod_set_mod_param_1);
+-static DEVICE_ATTR(delay_param_1, S_IWUGO | S_IRUGO, pod_get_delay_param_1,
++static DEVICE_ATTR(delay_param_1, S_IWUSR | S_IRUGO, pod_get_delay_param_1,
+                  pod_set_delay_param_1);
+-static DEVICE_ATTR(delay_param_1_note_value, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(delay_param_1_note_value, S_IWUSR | S_IRUGO,
+                  pod_get_delay_param_1_note_value,
+                  pod_set_delay_param_1_note_value);
+-static DEVICE_ATTR2(band_2_frequency__bass, band_2_frequency, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR2(band_2_frequency__bass, band_2_frequency, S_IWUSR | S_IRUGO,
+                   pod_get_band_2_frequency__bass,
+                   pod_set_band_2_frequency__bass);
+-static DEVICE_ATTR(delay_param_2, S_IWUGO | S_IRUGO, pod_get_delay_param_2,
++static DEVICE_ATTR(delay_param_2, S_IWUSR | S_IRUGO, pod_get_delay_param_2,
+                  pod_set_delay_param_2);
+-static DEVICE_ATTR(delay_volume_mix, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(delay_volume_mix, S_IWUSR | S_IRUGO,
+                  pod_get_delay_volume_mix, pod_set_delay_volume_mix);
+-static DEVICE_ATTR(delay_param_3, S_IWUGO | S_IRUGO, pod_get_delay_param_3,
++static DEVICE_ATTR(delay_param_3, S_IWUSR | S_IRUGO, pod_get_delay_param_3,
+                  pod_set_delay_param_3);
+-static DEVICE_ATTR(reverb_enable, S_IWUGO | S_IRUGO, pod_get_reverb_enable,
++static DEVICE_ATTR(reverb_enable, S_IWUSR | S_IRUGO, pod_get_reverb_enable,
+                  pod_set_reverb_enable);
+-static DEVICE_ATTR(reverb_type, S_IWUGO | S_IRUGO, pod_get_reverb_type,
++static DEVICE_ATTR(reverb_type, S_IWUSR | S_IRUGO, pod_get_reverb_type,
+                  pod_set_reverb_type);
+-static DEVICE_ATTR(reverb_decay, S_IWUGO | S_IRUGO, pod_get_reverb_decay,
++static DEVICE_ATTR(reverb_decay, S_IWUSR | S_IRUGO, pod_get_reverb_decay,
+                  pod_set_reverb_decay);
+-static DEVICE_ATTR(reverb_tone, S_IWUGO | S_IRUGO, pod_get_reverb_tone,
++static DEVICE_ATTR(reverb_tone, S_IWUSR | S_IRUGO, pod_get_reverb_tone,
+                  pod_set_reverb_tone);
+-static DEVICE_ATTR(reverb_pre_delay, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(reverb_pre_delay, S_IWUSR | S_IRUGO,
+                  pod_get_reverb_pre_delay, pod_set_reverb_pre_delay);
+-static DEVICE_ATTR(reverb_pre_post, S_IWUGO | S_IRUGO, pod_get_reverb_pre_post,
++static DEVICE_ATTR(reverb_pre_post, S_IWUSR | S_IRUGO, pod_get_reverb_pre_post,
+                  pod_set_reverb_pre_post);
+-static DEVICE_ATTR(band_2_frequency, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(band_2_frequency, S_IWUSR | S_IRUGO,
+                  pod_get_band_2_frequency, pod_set_band_2_frequency);
+-static DEVICE_ATTR2(band_3_frequency__bass, band_3_frequency, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR2(band_3_frequency__bass, band_3_frequency, S_IWUSR | S_IRUGO,
+                   pod_get_band_3_frequency__bass,
+                   pod_set_band_3_frequency__bass);
+-static DEVICE_ATTR(wah_enable, S_IWUGO | S_IRUGO, pod_get_wah_enable,
++static DEVICE_ATTR(wah_enable, S_IWUSR | S_IRUGO, pod_get_wah_enable,
+                  pod_set_wah_enable);
+-static DEVICE_ATTR(modulation_lo_cut, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(modulation_lo_cut, S_IWUSR | S_IRUGO,
+                  pod_get_modulation_lo_cut, pod_set_modulation_lo_cut);
+-static DEVICE_ATTR(delay_reverb_lo_cut, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(delay_reverb_lo_cut, S_IWUSR | S_IRUGO,
+                  pod_get_delay_reverb_lo_cut, pod_set_delay_reverb_lo_cut);
+-static DEVICE_ATTR(volume_pedal_minimum, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(volume_pedal_minimum, S_IWUSR | S_IRUGO,
+                  pod_get_volume_pedal_minimum, pod_set_volume_pedal_minimum);
+-static DEVICE_ATTR(eq_pre_post, S_IWUGO | S_IRUGO, pod_get_eq_pre_post,
++static DEVICE_ATTR(eq_pre_post, S_IWUSR | S_IRUGO, pod_get_eq_pre_post,
+                  pod_set_eq_pre_post);
+-static DEVICE_ATTR(volume_pre_post, S_IWUGO | S_IRUGO, pod_get_volume_pre_post,
++static DEVICE_ATTR(volume_pre_post, S_IWUSR | S_IRUGO, pod_get_volume_pre_post,
+                  pod_set_volume_pre_post);
+-static DEVICE_ATTR(di_model, S_IWUGO | S_IRUGO, pod_get_di_model,
++static DEVICE_ATTR(di_model, S_IWUSR | S_IRUGO, pod_get_di_model,
+                  pod_set_di_model);
+-static DEVICE_ATTR(di_delay, S_IWUGO | S_IRUGO, pod_get_di_delay,
++static DEVICE_ATTR(di_delay, S_IWUSR | S_IRUGO, pod_get_di_delay,
+                  pod_set_di_delay);
+-static DEVICE_ATTR(mod_enable, S_IWUGO | S_IRUGO, pod_get_mod_enable,
++static DEVICE_ATTR(mod_enable, S_IWUSR | S_IRUGO, pod_get_mod_enable,
+                  pod_set_mod_enable);
+-static DEVICE_ATTR(mod_param_1_note_value, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(mod_param_1_note_value, S_IWUSR | S_IRUGO,
+                  pod_get_mod_param_1_note_value,
+                  pod_set_mod_param_1_note_value);
+-static DEVICE_ATTR(mod_param_2, S_IWUGO | S_IRUGO, pod_get_mod_param_2,
++static DEVICE_ATTR(mod_param_2, S_IWUSR | S_IRUGO, pod_get_mod_param_2,
+                  pod_set_mod_param_2);
+-static DEVICE_ATTR(mod_param_3, S_IWUGO | S_IRUGO, pod_get_mod_param_3,
++static DEVICE_ATTR(mod_param_3, S_IWUSR | S_IRUGO, pod_get_mod_param_3,
+                  pod_set_mod_param_3);
+-static DEVICE_ATTR(mod_param_4, S_IWUGO | S_IRUGO, pod_get_mod_param_4,
++static DEVICE_ATTR(mod_param_4, S_IWUSR | S_IRUGO, pod_get_mod_param_4,
+                  pod_set_mod_param_4);
+-static DEVICE_ATTR(mod_param_5, S_IWUGO | S_IRUGO, pod_get_mod_param_5,
++static DEVICE_ATTR(mod_param_5, S_IWUSR | S_IRUGO, pod_get_mod_param_5,
+                  pod_set_mod_param_5);
+-static DEVICE_ATTR(mod_volume_mix, S_IWUGO | S_IRUGO, pod_get_mod_volume_mix,
++static DEVICE_ATTR(mod_volume_mix, S_IWUSR | S_IRUGO, pod_get_mod_volume_mix,
+                  pod_set_mod_volume_mix);
+-static DEVICE_ATTR(mod_pre_post, S_IWUGO | S_IRUGO, pod_get_mod_pre_post,
++static DEVICE_ATTR(mod_pre_post, S_IWUSR | S_IRUGO, pod_get_mod_pre_post,
+                  pod_set_mod_pre_post);
+-static DEVICE_ATTR(modulation_model, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(modulation_model, S_IWUSR | S_IRUGO,
+                  pod_get_modulation_model, pod_set_modulation_model);
+-static DEVICE_ATTR(band_3_frequency, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(band_3_frequency, S_IWUSR | S_IRUGO,
+                  pod_get_band_3_frequency, pod_set_band_3_frequency);
+-static DEVICE_ATTR2(band_4_frequency__bass, band_4_frequency, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR2(band_4_frequency__bass, band_4_frequency, S_IWUSR | S_IRUGO,
+                   pod_get_band_4_frequency__bass,
+                   pod_set_band_4_frequency__bass);
+-static DEVICE_ATTR(mod_param_1_double_precision, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(mod_param_1_double_precision, S_IWUSR | S_IRUGO,
+                  pod_get_mod_param_1_double_precision,
+                  pod_set_mod_param_1_double_precision);
+-static DEVICE_ATTR(delay_param_1_double_precision, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(delay_param_1_double_precision, S_IWUSR | S_IRUGO,
+                  pod_get_delay_param_1_double_precision,
+                  pod_set_delay_param_1_double_precision);
+-static DEVICE_ATTR(eq_enable, S_IWUGO | S_IRUGO, pod_get_eq_enable,
++static DEVICE_ATTR(eq_enable, S_IWUSR | S_IRUGO, pod_get_eq_enable,
+                  pod_set_eq_enable);
+-static DEVICE_ATTR(tap, S_IWUGO | S_IRUGO, pod_get_tap, pod_set_tap);
+-static DEVICE_ATTR(volume_tweak_pedal_assign, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(tap, S_IWUSR | S_IRUGO, pod_get_tap, pod_set_tap);
++static DEVICE_ATTR(volume_tweak_pedal_assign, S_IWUSR | S_IRUGO,
+                  pod_get_volume_tweak_pedal_assign,
+                  pod_set_volume_tweak_pedal_assign);
+-static DEVICE_ATTR(band_5_frequency, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(band_5_frequency, S_IWUSR | S_IRUGO,
+                  pod_get_band_5_frequency, pod_set_band_5_frequency);
+-static DEVICE_ATTR(tuner, S_IWUGO | S_IRUGO, pod_get_tuner, pod_set_tuner);
+-static DEVICE_ATTR(mic_selection, S_IWUGO | S_IRUGO, pod_get_mic_selection,
++static DEVICE_ATTR(tuner, S_IWUSR | S_IRUGO, pod_get_tuner, pod_set_tuner);
++static DEVICE_ATTR(mic_selection, S_IWUSR | S_IRUGO, pod_get_mic_selection,
+                  pod_set_mic_selection);
+-static DEVICE_ATTR(cabinet_model, S_IWUGO | S_IRUGO, pod_get_cabinet_model,
++static DEVICE_ATTR(cabinet_model, S_IWUSR | S_IRUGO, pod_get_cabinet_model,
+                  pod_set_cabinet_model);
+-static DEVICE_ATTR(stomp_model, S_IWUGO | S_IRUGO, pod_get_stomp_model,
++static DEVICE_ATTR(stomp_model, S_IWUSR | S_IRUGO, pod_get_stomp_model,
+                  pod_set_stomp_model);
+-static DEVICE_ATTR(roomlevel, S_IWUGO | S_IRUGO, pod_get_roomlevel,
++static DEVICE_ATTR(roomlevel, S_IWUSR | S_IRUGO, pod_get_roomlevel,
+                  pod_set_roomlevel);
+-static DEVICE_ATTR(band_4_frequency, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(band_4_frequency, S_IWUSR | S_IRUGO,
+                  pod_get_band_4_frequency, pod_set_band_4_frequency);
+-static DEVICE_ATTR(band_6_frequency, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(band_6_frequency, S_IWUSR | S_IRUGO,
+                  pod_get_band_6_frequency, pod_set_band_6_frequency);
+-static DEVICE_ATTR(stomp_param_1_note_value, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(stomp_param_1_note_value, S_IWUSR | S_IRUGO,
+                  pod_get_stomp_param_1_note_value,
+                  pod_set_stomp_param_1_note_value);
+-static DEVICE_ATTR(stomp_param_2, S_IWUGO | S_IRUGO, pod_get_stomp_param_2,
++static DEVICE_ATTR(stomp_param_2, S_IWUSR | S_IRUGO, pod_get_stomp_param_2,
+                  pod_set_stomp_param_2);
+-static DEVICE_ATTR(stomp_param_3, S_IWUGO | S_IRUGO, pod_get_stomp_param_3,
++static DEVICE_ATTR(stomp_param_3, S_IWUSR | S_IRUGO, pod_get_stomp_param_3,
+                  pod_set_stomp_param_3);
+-static DEVICE_ATTR(stomp_param_4, S_IWUGO | S_IRUGO, pod_get_stomp_param_4,
++static DEVICE_ATTR(stomp_param_4, S_IWUSR | S_IRUGO, pod_get_stomp_param_4,
+                  pod_set_stomp_param_4);
+-static DEVICE_ATTR(stomp_param_5, S_IWUGO | S_IRUGO, pod_get_stomp_param_5,
++static DEVICE_ATTR(stomp_param_5, S_IWUSR | S_IRUGO, pod_get_stomp_param_5,
+                  pod_set_stomp_param_5);
+-static DEVICE_ATTR(stomp_param_6, S_IWUGO | S_IRUGO, pod_get_stomp_param_6,
++static DEVICE_ATTR(stomp_param_6, S_IWUSR | S_IRUGO, pod_get_stomp_param_6,
+                  pod_set_stomp_param_6);
+-static DEVICE_ATTR(amp_switch_select, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(amp_switch_select, S_IWUSR | S_IRUGO,
+                  pod_get_amp_switch_select, pod_set_amp_switch_select);
+-static DEVICE_ATTR(delay_param_4, S_IWUGO | S_IRUGO, pod_get_delay_param_4,
++static DEVICE_ATTR(delay_param_4, S_IWUSR | S_IRUGO, pod_get_delay_param_4,
+                  pod_set_delay_param_4);
+-static DEVICE_ATTR(delay_param_5, S_IWUGO | S_IRUGO, pod_get_delay_param_5,
++static DEVICE_ATTR(delay_param_5, S_IWUSR | S_IRUGO, pod_get_delay_param_5,
+                  pod_set_delay_param_5);
+-static DEVICE_ATTR(delay_pre_post, S_IWUGO | S_IRUGO, pod_get_delay_pre_post,
++static DEVICE_ATTR(delay_pre_post, S_IWUSR | S_IRUGO, pod_get_delay_pre_post,
+                  pod_set_delay_pre_post);
+-static DEVICE_ATTR(delay_model, S_IWUGO | S_IRUGO, pod_get_delay_model,
++static DEVICE_ATTR(delay_model, S_IWUSR | S_IRUGO, pod_get_delay_model,
+                  pod_set_delay_model);
+-static DEVICE_ATTR(delay_verb_model, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(delay_verb_model, S_IWUSR | S_IRUGO,
+                  pod_get_delay_verb_model, pod_set_delay_verb_model);
+-static DEVICE_ATTR(tempo_msb, S_IWUGO | S_IRUGO, pod_get_tempo_msb,
++static DEVICE_ATTR(tempo_msb, S_IWUSR | S_IRUGO, pod_get_tempo_msb,
+                  pod_set_tempo_msb);
+-static DEVICE_ATTR(tempo_lsb, S_IWUGO | S_IRUGO, pod_get_tempo_lsb,
++static DEVICE_ATTR(tempo_lsb, S_IWUSR | S_IRUGO, pod_get_tempo_lsb,
+                  pod_set_tempo_lsb);
+-static DEVICE_ATTR(wah_model, S_IWUGO | S_IRUGO, pod_get_wah_model,
++static DEVICE_ATTR(wah_model, S_IWUSR | S_IRUGO, pod_get_wah_model,
+                  pod_set_wah_model);
+-static DEVICE_ATTR(bypass_volume, S_IWUGO | S_IRUGO, pod_get_bypass_volume,
++static DEVICE_ATTR(bypass_volume, S_IWUSR | S_IRUGO, pod_get_bypass_volume,
+                  pod_set_bypass_volume);
+-static DEVICE_ATTR(fx_loop_on_off, S_IWUGO | S_IRUGO, pod_get_fx_loop_on_off,
++static DEVICE_ATTR(fx_loop_on_off, S_IWUSR | S_IRUGO, pod_get_fx_loop_on_off,
+                  pod_set_fx_loop_on_off);
+-static DEVICE_ATTR(tweak_param_select, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(tweak_param_select, S_IWUSR | S_IRUGO,
+                  pod_get_tweak_param_select, pod_set_tweak_param_select);
+-static DEVICE_ATTR(amp1_engage, S_IWUGO | S_IRUGO, pod_get_amp1_engage,
++static DEVICE_ATTR(amp1_engage, S_IWUSR | S_IRUGO, pod_get_amp1_engage,
+                  pod_set_amp1_engage);
+-static DEVICE_ATTR(band_1_gain, S_IWUGO | S_IRUGO, pod_get_band_1_gain,
++static DEVICE_ATTR(band_1_gain, S_IWUSR | S_IRUGO, pod_get_band_1_gain,
+                  pod_set_band_1_gain);
+-static DEVICE_ATTR2(band_2_gain__bass, band_2_gain, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR2(band_2_gain__bass, band_2_gain, S_IWUSR | S_IRUGO,
+                   pod_get_band_2_gain__bass, pod_set_band_2_gain__bass);
+-static DEVICE_ATTR(band_2_gain, S_IWUGO | S_IRUGO, pod_get_band_2_gain,
++static DEVICE_ATTR(band_2_gain, S_IWUSR | S_IRUGO, pod_get_band_2_gain,
+                  pod_set_band_2_gain);
+-static DEVICE_ATTR2(band_3_gain__bass, band_3_gain, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR2(band_3_gain__bass, band_3_gain, S_IWUSR | S_IRUGO,
+                   pod_get_band_3_gain__bass, pod_set_band_3_gain__bass);
+-static DEVICE_ATTR(band_3_gain, S_IWUGO | S_IRUGO, pod_get_band_3_gain,
++static DEVICE_ATTR(band_3_gain, S_IWUSR | S_IRUGO, pod_get_band_3_gain,
+                  pod_set_band_3_gain);
+-static DEVICE_ATTR2(band_4_gain__bass, band_4_gain, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR2(band_4_gain__bass, band_4_gain, S_IWUSR | S_IRUGO,
+                   pod_get_band_4_gain__bass, pod_set_band_4_gain__bass);
+-static DEVICE_ATTR2(band_5_gain__bass, band_5_gain, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR2(band_5_gain__bass, band_5_gain, S_IWUSR | S_IRUGO,
+                   pod_get_band_5_gain__bass, pod_set_band_5_gain__bass);
+-static DEVICE_ATTR(band_4_gain, S_IWUGO | S_IRUGO, pod_get_band_4_gain,
++static DEVICE_ATTR(band_4_gain, S_IWUSR | S_IRUGO, pod_get_band_4_gain,
+                  pod_set_band_4_gain);
+-static DEVICE_ATTR2(band_6_gain__bass, band_6_gain, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR2(band_6_gain__bass, band_6_gain, S_IWUSR | S_IRUGO,
+                   pod_get_band_6_gain__bass, pod_set_band_6_gain__bass);
+ static DEVICE_ATTR(body, S_IRUGO, variax_get_body, line6_nop_write);
+ static DEVICE_ATTR(pickup1_enable, S_IRUGO, variax_get_pickup1_enable,
+--- a/drivers/staging/line6/midi.c
++++ b/drivers/staging/line6/midi.c
+@@ -362,8 +362,8 @@ static ssize_t midi_set_midi_mask_receiv
+       return count;
+ }
+-static DEVICE_ATTR(midi_mask_transmit, S_IWUGO | S_IRUGO, midi_get_midi_mask_transmit, midi_set_midi_mask_transmit);
+-static DEVICE_ATTR(midi_mask_receive, S_IWUGO | S_IRUGO, midi_get_midi_mask_receive, midi_set_midi_mask_receive);
++static DEVICE_ATTR(midi_mask_transmit, S_IWUSR | S_IRUGO, midi_get_midi_mask_transmit, midi_set_midi_mask_transmit);
++static DEVICE_ATTR(midi_mask_receive, S_IWUSR | S_IRUGO, midi_get_midi_mask_receive, midi_set_midi_mask_receive);
+ /* MIDI device destructor */
+ static int snd_line6_midi_free(struct snd_device *device)
+--- a/drivers/staging/line6/pod.c
++++ b/drivers/staging/line6/pod.c
+@@ -952,33 +952,33 @@ POD_GET_SYSTEM_PARAM(tuner_pitch, 1, 1);
+ #undef GET_SYSTEM_PARAM
+ /* POD special files: */
+-static DEVICE_ATTR(channel, S_IWUGO | S_IRUGO, pod_get_channel, pod_set_channel);
++static DEVICE_ATTR(channel, S_IWUSR | S_IRUGO, pod_get_channel, pod_set_channel);
+ static DEVICE_ATTR(clip, S_IRUGO, pod_wait_for_clip, line6_nop_write);
+ static DEVICE_ATTR(device_id, S_IRUGO, pod_get_device_id, line6_nop_write);
+ static DEVICE_ATTR(dirty, S_IRUGO, pod_get_dirty, line6_nop_write);
+-static DEVICE_ATTR(dump, S_IWUGO | S_IRUGO, pod_get_dump, pod_set_dump);
+-static DEVICE_ATTR(dump_buf, S_IWUGO | S_IRUGO, pod_get_dump_buf, pod_set_dump_buf);
+-static DEVICE_ATTR(finish, S_IWUGO, line6_nop_read, pod_set_finish);
++static DEVICE_ATTR(dump, S_IWUSR | S_IRUGO, pod_get_dump, pod_set_dump);
++static DEVICE_ATTR(dump_buf, S_IWUSR | S_IRUGO, pod_get_dump_buf, pod_set_dump_buf);
++static DEVICE_ATTR(finish, S_IWUSR, line6_nop_read, pod_set_finish);
+ static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version, line6_nop_write);
+-static DEVICE_ATTR(midi_postprocess, S_IWUGO | S_IRUGO, pod_get_midi_postprocess, pod_set_midi_postprocess);
+-static DEVICE_ATTR(monitor_level, S_IWUGO | S_IRUGO, pod_get_monitor_level, pod_set_monitor_level);
++static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO, pod_get_midi_postprocess, pod_set_midi_postprocess);
++static DEVICE_ATTR(monitor_level, S_IWUSR | S_IRUGO, pod_get_monitor_level, pod_set_monitor_level);
+ static DEVICE_ATTR(name, S_IRUGO, pod_get_name, line6_nop_write);
+ static DEVICE_ATTR(name_buf, S_IRUGO, pod_get_name_buf, line6_nop_write);
+-static DEVICE_ATTR(retrieve_amp_setup, S_IWUGO, line6_nop_read, pod_set_retrieve_amp_setup);
+-static DEVICE_ATTR(retrieve_channel, S_IWUGO, line6_nop_read, pod_set_retrieve_channel);
+-static DEVICE_ATTR(retrieve_effects_setup, S_IWUGO, line6_nop_read, pod_set_retrieve_effects_setup);
+-static DEVICE_ATTR(routing, S_IWUGO | S_IRUGO, pod_get_routing, pod_set_routing);
++static DEVICE_ATTR(retrieve_amp_setup, S_IWUSR, line6_nop_read, pod_set_retrieve_amp_setup);
++static DEVICE_ATTR(retrieve_channel, S_IWUSR, line6_nop_read, pod_set_retrieve_channel);
++static DEVICE_ATTR(retrieve_effects_setup, S_IWUSR, line6_nop_read, pod_set_retrieve_effects_setup);
++static DEVICE_ATTR(routing, S_IWUSR | S_IRUGO, pod_get_routing, pod_set_routing);
+ static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number, line6_nop_write);
+-static DEVICE_ATTR(store_amp_setup, S_IWUGO, line6_nop_read, pod_set_store_amp_setup);
+-static DEVICE_ATTR(store_channel, S_IWUGO, line6_nop_read, pod_set_store_channel);
+-static DEVICE_ATTR(store_effects_setup, S_IWUGO, line6_nop_read, pod_set_store_effects_setup);
+-static DEVICE_ATTR(tuner_freq, S_IWUGO | S_IRUGO, pod_get_tuner_freq, pod_set_tuner_freq);
+-static DEVICE_ATTR(tuner_mute, S_IWUGO | S_IRUGO, pod_get_tuner_mute, pod_set_tuner_mute);
++static DEVICE_ATTR(store_amp_setup, S_IWUSR, line6_nop_read, pod_set_store_amp_setup);
++static DEVICE_ATTR(store_channel, S_IWUSR, line6_nop_read, pod_set_store_channel);
++static DEVICE_ATTR(store_effects_setup, S_IWUSR, line6_nop_read, pod_set_store_effects_setup);
++static DEVICE_ATTR(tuner_freq, S_IWUSR | S_IRUGO, pod_get_tuner_freq, pod_set_tuner_freq);
++static DEVICE_ATTR(tuner_mute, S_IWUSR | S_IRUGO, pod_get_tuner_mute, pod_set_tuner_mute);
+ static DEVICE_ATTR(tuner_note, S_IRUGO, pod_get_tuner_note, line6_nop_write);
+ static DEVICE_ATTR(tuner_pitch, S_IRUGO, pod_get_tuner_pitch, line6_nop_write);
+ #if CREATE_RAW_FILE
+-static DEVICE_ATTR(raw, S_IWUGO, line6_nop_read, line6_set_raw);
++static DEVICE_ATTR(raw, S_IWUSR, line6_nop_read, line6_set_raw);
+ #endif
+ /*
+--- a/drivers/staging/line6/toneport.c
++++ b/drivers/staging/line6/toneport.c
+@@ -124,9 +124,9 @@ static ssize_t toneport_set_led_green(st
+       return count;
+ }
+-static DEVICE_ATTR(led_red, S_IWUGO | S_IRUGO, line6_nop_read,
++static DEVICE_ATTR(led_red, S_IWUSR | S_IRUGO, line6_nop_read,
+                  toneport_set_led_red);
+-static DEVICE_ATTR(led_green, S_IWUGO | S_IRUGO, line6_nop_read,
++static DEVICE_ATTR(led_green, S_IWUSR | S_IRUGO, line6_nop_read,
+                  toneport_set_led_green);
+ static int toneport_send_cmd(struct usb_device *usbdev, int cmd1, int cmd2)
+--- a/drivers/staging/line6/variax.c
++++ b/drivers/staging/line6/variax.c
+@@ -389,17 +389,17 @@ static ssize_t variax_set_raw2(struct de
+ #endif
+ /* Variax workbench special files: */
+-static DEVICE_ATTR(model, S_IWUGO | S_IRUGO, variax_get_model, variax_set_model);
+-static DEVICE_ATTR(volume, S_IWUGO | S_IRUGO, variax_get_volume, variax_set_volume);
+-static DEVICE_ATTR(tone, S_IWUGO | S_IRUGO, variax_get_tone, variax_set_tone);
++static DEVICE_ATTR(model, S_IWUSR | S_IRUGO, variax_get_model, variax_set_model);
++static DEVICE_ATTR(volume, S_IWUSR | S_IRUGO, variax_get_volume, variax_set_volume);
++static DEVICE_ATTR(tone, S_IWUSR | S_IRUGO, variax_get_tone, variax_set_tone);
+ static DEVICE_ATTR(name, S_IRUGO, variax_get_name, line6_nop_write);
+ static DEVICE_ATTR(bank, S_IRUGO, variax_get_bank, line6_nop_write);
+ static DEVICE_ATTR(dump, S_IRUGO, variax_get_dump, line6_nop_write);
+-static DEVICE_ATTR(active, S_IWUGO | S_IRUGO, variax_get_active, variax_set_active);
++static DEVICE_ATTR(active, S_IWUSR | S_IRUGO, variax_get_active, variax_set_active);
+ #if CREATE_RAW_FILE
+-static DEVICE_ATTR(raw, S_IWUGO, line6_nop_read, line6_set_raw);
+-static DEVICE_ATTR(raw2, S_IWUGO, line6_nop_read, variax_set_raw2);
++static DEVICE_ATTR(raw, S_IWUSR, line6_nop_read, line6_set_raw);
++static DEVICE_ATTR(raw2, S_IWUSR, line6_nop_read, variax_set_raw2);
+ #endif
diff --git a/queue-2.6.36/staging-rt2870-add-new-usb-id-for-belkin-f6d4050-v1.patch b/queue-2.6.36/staging-rt2870-add-new-usb-id-for-belkin-f6d4050-v1.patch
new file mode 100644 (file)
index 0000000..e267039
--- /dev/null
@@ -0,0 +1,29 @@
+From 705059a670f3af2b37695e82de0ee58e75e656ed Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Thu, 28 Oct 2010 08:47:13 -0500
+Subject: staging: rt2870: Add new USB ID for Belkin F6D4050 v1
+
+From: Larry Finger <Larry.Finger@lwfinger.net>
+
+commit 705059a670f3af2b37695e82de0ee58e75e656ed upstream.
+
+Add new USB ID for FT2870 for Belkin F6D4050 v1
+
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Reported- and Tested-by: James Long <crogonint@yahoo.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/rt2860/usb_main_dev.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/staging/rt2860/usb_main_dev.c
++++ b/drivers/staging/rt2860/usb_main_dev.c
+@@ -65,6 +65,7 @@ struct usb_device_id rtusb_usb_id[] = {
+       {USB_DEVICE(0x14B2, 0x3C07)},   /* AL */
+       {USB_DEVICE(0x050D, 0x8053)},   /* Belkin */
+       {USB_DEVICE(0x050D, 0x825B)},   /* Belkin */
++      {USB_DEVICE(0x050D, 0x935A)},   /* Belkin F6D4050 v1 */
+       {USB_DEVICE(0x050D, 0x935B)},   /* Belkin F6D4050 v2 */
+       {USB_DEVICE(0x14B2, 0x3C23)},   /* Airlink */
+       {USB_DEVICE(0x14B2, 0x3C27)},   /* Airlink */