From: Greg Kroah-Hartman Date: Fri, 3 Dec 2010 21:02:45 +0000 (-0800) Subject: .36 patches X-Git-Tag: v2.6.27.57~65 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ae06513cb0c5d79f1b8d6e2fbdc1bd6c32adce75;p=thirdparty%2Fkernel%2Fstable-queue.git .36 patches --- 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 index 00000000000..afa5c8f0db3 --- /dev/null +++ b/queue-2.6.36/alsa-hda-use-hp-laptop-quirk-to-enable-headphones-automute-for-asus-a52j.patch @@ -0,0 +1,36 @@ +From 673f7a8984c3a9e2cb1108ce221da1ebbd9e5d09 Mon Sep 17 00:00:00 2001 +From: Daniel T Chen +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 + +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 +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index e689b0ec878..00000000000 --- a/queue-2.6.36/drm-i915-die-i915_probe_agp-die.patch +++ /dev/null @@ -1,315 +0,0 @@ -From 19966754328d99ee003ddfc7a8c31ceb115483ac Mon Sep 17 00:00:00 2001 -From: Daniel Vetter -Date: Mon, 6 Sep 2010 20:08:44 +0200 -Subject: drm/i915: die, i915_probe_agp, die - -From: Daniel Vetter - -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 -Signed-off-by: Chris Wilson -Signed-off-by: Greg Kroah-Hartman - -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 index 00000000000..fdcb27fc41e --- /dev/null +++ b/queue-2.6.36/reiserfs-don-t-acquire-lock-recursively-in-reiserfs_acl_chmod.patch @@ -0,0 +1,51 @@ +From 238af8751f64a75f8b638193353b1c31ea32e738 Mon Sep 17 00:00:00 2001 +From: Frederic Weisbecker +Date: Thu, 2 Dec 2010 14:31:16 -0800 +Subject: reiserfs: don't acquire lock recursively in reiserfs_acl_chmod + +From: Frederic Weisbecker + +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 +Signed-off-by: Frederic Weisbecker +Tested-by: Pawel Zawora +Cc: Jeff Mahoney +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..e0026841fa2 --- /dev/null +++ b/queue-2.6.36/reiserfs-fix-inode-mutex-reiserfs-lock-misordering.patch @@ -0,0 +1,50 @@ +From da905873effecd1c0166e578bc4b5006f041b18b Mon Sep 17 00:00:00 2001 +From: Frederic Weisbecker +Date: Wed, 24 Nov 2010 12:57:15 -0800 +Subject: reiserfs: fix inode mutex - reiserfs lock misordering + +From: Frederic Weisbecker + +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 +Reported-by: Markus Gapp +Reported-by: Jan Kara +Cc: Jeff Mahoney +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + 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) { diff --git a/queue-2.6.36/series b/queue-2.6.36/series index d7db0c77b91..9b27d8e6e49 100644 --- a/queue-2.6.36/series +++ b/queue-2.6.36/series @@ -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 index 00000000000..62373e2f3a9 --- /dev/null +++ b/queue-2.6.36/staging-asus_oled-fix-up-my-fixup-for-some-sysfs-attribute-permissions.patch @@ -0,0 +1,40 @@ +From 515b4987ccd097cdf5416530b05fdf9e01afe95a Mon Sep 17 00:00:00 2001 +From: Greg Kroah-Hartman +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 + +commit 515b4987ccd097cdf5416530b05fdf9e01afe95a upstream. + +They should be writable by root, not readable. +Doh, stupid me with the wrong flags. + +Reported-by: Jonathan Cameron +Cc: Jakub Schmidtke +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..7fd9ea92241 --- /dev/null +++ b/queue-2.6.36/staging-asus_oled-fix-up-some-sysfs-attribute-permissions.patch @@ -0,0 +1,39 @@ +From 590b0b9754bd8928926bae7194b6da7ead9bda3b Mon Sep 17 00:00:00 2001 +From: Greg Kroah-Hartman +Date: Tue, 16 Nov 2010 11:17:01 -0800 +Subject: Staging: asus_oled: fix up some sysfs attribute permissions + +From: Greg Kroah-Hartman + +commit 590b0b9754bd8928926bae7194b6da7ead9bda3b upstream. + +They should not be writable by any user + +Reported-by: Linus Torvalds +Cc: Jakub Schmidtke +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..5ad7c8866c7 --- /dev/null +++ b/queue-2.6.36/staging-line6-fix-up-some-sysfs-attribute-permissions.patch @@ -0,0 +1,446 @@ +From 2018845b6a169f75341f8e68ad1089cb6697cf24 Mon Sep 17 00:00:00 2001 +From: Greg Kroah-Hartman +Date: Tue, 16 Nov 2010 11:23:33 -0800 +Subject: Staging: line6: fix up some sysfs attribute permissions + +From: Greg Kroah-Hartman + +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 +Cc: Markus Grabner +Cc: Mariusz Kozlowski +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..e2670393a4c --- /dev/null +++ b/queue-2.6.36/staging-rt2870-add-new-usb-id-for-belkin-f6d4050-v1.patch @@ -0,0 +1,29 @@ +From 705059a670f3af2b37695e82de0ee58e75e656ed Mon Sep 17 00:00:00 2001 +From: Larry Finger +Date: Thu, 28 Oct 2010 08:47:13 -0500 +Subject: staging: rt2870: Add new USB ID for Belkin F6D4050 v1 + +From: Larry Finger + +commit 705059a670f3af2b37695e82de0ee58e75e656ed upstream. + +Add new USB ID for FT2870 for Belkin F6D4050 v1 + +Signed-off-by: Larry Finger +Reported- and Tested-by: James Long +Signed-off-by: Greg Kroah-Hartman + +--- + 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 */