From 8ebf1e8e7cfbe5755646db6a14763b7cd376db66 Mon Sep 17 00:00:00 2001 From: Chris Wright Date: Mon, 9 Jun 2008 14:05:36 -0700 Subject: [PATCH] kick off next patch queue for 2.6.25 --- ...d-rd-alias-to-new-brd-ramdisk-driver.patch | 29 ++++ ...auto-config-mode-with-realtek-codecs.patch | 35 +++++ .../b43-fix-controller-restart-crash.patch | 57 ++++++++ ...le-failure-exit-in-create_write_pipe.patch | 35 +++++ ...dd-missing-lock-around-notify_change.patch | 35 +++++ .../ecryptfs-clean-up-lock_parent.patch | 71 ++++++++++ .../ecryptfs-fix-missed-mutex_unlock.patch | 34 +++++ ...ct-crypt_stat-flags-in-ecryptfs_open.patch | 36 +++++ .../ipwireless-fix-blocked-sending.patch | 125 ++++++++++++++++++ .../ps3-fix-frame-buffer-build-error.patch | 39 ++++++ queue-2.6.25/series | 13 ++ ...with-audigy2-zs-notebook-pcmcia-card.patch | 83 ++++++++++++ ...on-in-ssb_pcicore_dev_irqvecs_enable.patch | 45 +++++++ ...hv-fix-locking-in-non-paged-i-o-case.patch | 30 +++++ 14 files changed, 667 insertions(+) create mode 100644 queue-2.6.25/add-rd-alias-to-new-brd-ramdisk-driver.patch create mode 100644 queue-2.6.25/alsa-hda-fix-resume-of-auto-config-mode-with-realtek-codecs.patch create mode 100644 queue-2.6.25/b43-fix-controller-restart-crash.patch create mode 100644 queue-2.6.25/double-free-of-inode-on-alloc_file-failure-exit-in-create_write_pipe.patch create mode 100644 queue-2.6.25/ecryptfs-add-missing-lock-around-notify_change.patch create mode 100644 queue-2.6.25/ecryptfs-clean-up-lock_parent.patch create mode 100644 queue-2.6.25/ecryptfs-fix-missed-mutex_unlock.patch create mode 100644 queue-2.6.25/ecryptfs-protect-crypt_stat-flags-in-ecryptfs_open.patch create mode 100644 queue-2.6.25/ipwireless-fix-blocked-sending.patch create mode 100644 queue-2.6.25/ps3-fix-frame-buffer-build-error.patch create mode 100644 queue-2.6.25/series create mode 100644 queue-2.6.25/sound-emu10k1-fix-system-hang-with-audigy2-zs-notebook-pcmcia-card.patch create mode 100644 queue-2.6.25/ssb-fix-context-assertion-in-ssb_pcicore_dev_irqvecs_enable.patch create mode 100644 queue-2.6.25/sunhv-fix-locking-in-non-paged-i-o-case.patch diff --git a/queue-2.6.25/add-rd-alias-to-new-brd-ramdisk-driver.patch b/queue-2.6.25/add-rd-alias-to-new-brd-ramdisk-driver.patch new file mode 100644 index 00000000000..5194fbb8a58 --- /dev/null +++ b/queue-2.6.25/add-rd-alias-to-new-brd-ramdisk-driver.patch @@ -0,0 +1,29 @@ +From efedf51c866130945b5db755cb58670e60205d83 Mon Sep 17 00:00:00 2001 +Message-ID: <20080604151842.GA30484@wotan.suse.de> +From: Nick Piggin +Date: Wed, 4 Jun 2008 17:18:42 +0200 +Subject: Add 'rd' alias to new brd ramdisk driver + +From: Nick Piggin + +upstream commit: efedf51c866130945b5db755cb58670e60205d83 + +Alias brd to rd in the hope of helping legacy users. Suggested by Jan. + +Signed-off-by: Nick Piggin +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + drivers/block/brd.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/block/brd.c ++++ b/drivers/block/brd.c +@@ -392,6 +392,7 @@ module_param(rd_size, int, 0); + MODULE_PARM_DESC(rd_size, "Size of each RAM disk in kbytes."); + MODULE_LICENSE("GPL"); + MODULE_ALIAS_BLOCKDEV_MAJOR(RAMDISK_MAJOR); ++MODULE_ALIAS("rd"); + + #ifndef MODULE + /* Legacy boot options - nonmodular */ diff --git a/queue-2.6.25/alsa-hda-fix-resume-of-auto-config-mode-with-realtek-codecs.patch b/queue-2.6.25/alsa-hda-fix-resume-of-auto-config-mode-with-realtek-codecs.patch new file mode 100644 index 00000000000..db01a5b8ca2 --- /dev/null +++ b/queue-2.6.25/alsa-hda-fix-resume-of-auto-config-mode-with-realtek-codecs.patch @@ -0,0 +1,35 @@ +From stable-bounces@linux.kernel.org Mon Jun 9 13:33:12 2008 +Date: Sun, 08 Jun 2008 09:26:09 +0200 +Message-ID: +From: Takashi Iwai +To: stable@kernel.org +Subject: ALSA: hda - Fix resume of auto-config mode with Realtek codecs + +From: Takashi Iwai + +upstream commit: 07bc76dfa19b10017b518dd9aa1b2719e8c863de + +The auto-config mode of Realtek ALC codecs has a bug since 2.6.25 +that it cannot resume properly. The problem was the wrong assignment +of init_hook that overrides the whole initialization. + +Relevant bug reports: + http://bugzilla.kernel.org/show_bug.cgi?id=10662 + https://bugzilla.novell.com/show_bug.cgi?id=385473 + +Signed-off-by: Takashi Iwai +Signed-off-by: Chris Wright +--- + sound/pci/hda/patch_realtek.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -940,7 +940,6 @@ do_sku: + AC_VERB_SET_UNSOLICITED_ENABLE, + AC_USRSP_EN | ALC880_HP_EVENT); + spec->unsol_event = alc_sku_unsol_event; +- spec->init_hook = alc_sku_automute; + } + + /* diff --git a/queue-2.6.25/b43-fix-controller-restart-crash.patch b/queue-2.6.25/b43-fix-controller-restart-crash.patch new file mode 100644 index 00000000000..91e9e0ae53d --- /dev/null +++ b/queue-2.6.25/b43-fix-controller-restart-crash.patch @@ -0,0 +1,57 @@ +From 3bf0a32e22fedc0b46443699db2d61ac2a883ac4 Mon Sep 17 00:00:00 2001 +Message-Id: <200806061558.42998.mb@bu3sch.de> +From: Michael Buesch +Date: Thu, 22 May 2008 16:32:16 +0200 +Subject: b43: Fix controller restart crash + +From: Michael Buesch + +upstream commit: 3bf0a32e22fedc0b46443699db2d61ac2a883ac4 + +This fixes a kernel crash on rmmod, in the case where the controller +was restarted before doing the rmmod. + +Signed-off-by: Michael Buesch +Signed-off-by: John W. Linville +Signed-off-by: Chris Wright +--- + drivers/net/wireless/b43/main.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +--- a/drivers/net/wireless/b43/main.c ++++ b/drivers/net/wireless/b43/main.c +@@ -3818,7 +3818,9 @@ static void b43_chip_reset(struct work_s + goto out; + } + } +- out: ++out: ++ if (err) ++ wl->current_dev = NULL; /* Failed to init the dev. */ + mutex_unlock(&wl->mutex); + if (err) + b43err(wl, "Controller restart FAILED\n"); +@@ -3967,9 +3969,11 @@ static void b43_one_core_detach(struct s + struct b43_wldev *wldev; + struct b43_wl *wl; + ++ /* Do not cancel ieee80211-workqueue based work here. ++ * See comment in b43_remove(). */ ++ + wldev = ssb_get_drvdata(dev); + wl = wldev->wl; +- cancel_work_sync(&wldev->restart_work); + b43_debugfs_remove_device(wldev); + b43_wireless_core_detach(wldev); + list_del(&wldev->list); +@@ -4152,6 +4156,10 @@ static void b43_remove(struct ssb_device + struct b43_wl *wl = ssb_get_devtypedata(dev); + struct b43_wldev *wldev = ssb_get_drvdata(dev); + ++ /* We must cancel any work here before unregistering from ieee80211, ++ * as the ieee80211 unreg will destroy the workqueue. */ ++ cancel_work_sync(&wldev->restart_work); ++ + B43_WARN_ON(!wl); + if (wl->current_dev == wldev) + ieee80211_unregister_hw(wl->hw); diff --git a/queue-2.6.25/double-free-of-inode-on-alloc_file-failure-exit-in-create_write_pipe.patch b/queue-2.6.25/double-free-of-inode-on-alloc_file-failure-exit-in-create_write_pipe.patch new file mode 100644 index 00000000000..f70fb91ef1a --- /dev/null +++ b/queue-2.6.25/double-free-of-inode-on-alloc_file-failure-exit-in-create_write_pipe.patch @@ -0,0 +1,35 @@ +From ed1524371716466e9c762808b02601d0d0276a92 Mon Sep 17 00:00:00 2001 +Message-ID: <20080607172910.GD17481@vipunen.hut.fi> +From: Al Viro +Cc: Sami Liedes +Date: Tue, 22 Apr 2008 19:51:27 -0400 +Subject: double-free of inode on alloc_file() failure exit in create_write_pipe() + +From: Al Viro + +upstream commit: ed1524371716466e9c762808b02601d0d0276a92 + +Duh... Fortunately, the bug is quite recent (post-2.6.25) and, embarrassingly, +mine ;-/ + +http://bugzilla.kernel.org/show_bug.cgi?id=10878 + +Signed-off-by: Al Viro +Signed-off-by: Chris Wright +--- + fs/pipe.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/fs/pipe.c ++++ b/fs/pipe.c +@@ -988,7 +988,10 @@ struct file *create_write_pipe(void) + return f; + + err_dentry: ++ free_pipe_info(inode); + dput(dentry); ++ return ERR_PTR(err); ++ + err_inode: + free_pipe_info(inode); + iput(inode); diff --git a/queue-2.6.25/ecryptfs-add-missing-lock-around-notify_change.patch b/queue-2.6.25/ecryptfs-add-missing-lock-around-notify_change.patch new file mode 100644 index 00000000000..155d2b09a78 --- /dev/null +++ b/queue-2.6.25/ecryptfs-add-missing-lock-around-notify_change.patch @@ -0,0 +1,35 @@ +From stable-bounces@linux.kernel.org Mon Jun 9 13:44:01 2008 +Date: Sun, 8 Jun 2008 10:56:53 +0200 +From: Willy Tarreau +To: stable@kernel.org +Message-ID: <20080608085653.GA6439@1wt.eu> +Cc: mszeredi@suse.cz, linux-kernel@vger.kernel.org, mhalcrow@us.ibm.com +Subject: ecryptfs: add missing lock around notify_change + +From: Miklos Szeredi + +upstream commit: 9c3580aa52195699065bc2d7242b1c7e3e6903fa + +Callers of notify_change() need to hold i_mutex. + +Signed-off-by: Miklos Szeredi +Cc: Michael Halcrow +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + fs/ecryptfs/inode.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/fs/ecryptfs/inode.c ++++ b/fs/ecryptfs/inode.c +@@ -908,7 +908,9 @@ static int ecryptfs_setattr(struct dentr + if (ia->ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID)) + ia->ia_valid &= ~ATTR_MODE; + ++ mutex_lock(&lower_dentry->d_inode->i_mutex); + rc = notify_change(lower_dentry, ia); ++ mutex_unlock(&lower_dentry->d_inode->i_mutex); + out: + fsstack_copy_attr_all(inode, lower_inode, NULL); + return rc; diff --git a/queue-2.6.25/ecryptfs-clean-up-lock_parent.patch b/queue-2.6.25/ecryptfs-clean-up-lock_parent.patch new file mode 100644 index 00000000000..d7d7057e25a --- /dev/null +++ b/queue-2.6.25/ecryptfs-clean-up-lock_parent.patch @@ -0,0 +1,71 @@ +From stable-bounces@linux.kernel.org Mon Jun 9 13:46:08 2008 +Date: Sun, 8 Jun 2008 10:59:23 +0200 +From: Willy Tarreau +To: stable@kernel.org +Message-ID: <20080608085923.GC6439@1wt.eu> +Content-Disposition: inline +Cc: hch@infradead.org, mszeredi@suse.cz, linux-kernel@vger.kernel.org, mhalcrow@us.ibm.com +Subject: ecryptfs: clean up (un)lock_parent + +From: Miklos Szeredi + +upstream commit: 8dc4e37362a5dc910d704d52ac6542bfd49ddc2f + +dget(dentry->d_parent) --> dget_parent(dentry) + +unlock_parent() is racy and unnecessary. Replace single caller with +unlock_dir(). + +There are several other suspect uses of ->d_parent in ecryptfs... + +Signed-off-by: Miklos Szeredi +Cc: Michael Halcrow +Cc: Christoph Hellwig +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + fs/ecryptfs/inode.c | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +--- a/fs/ecryptfs/inode.c ++++ b/fs/ecryptfs/inode.c +@@ -37,17 +37,11 @@ static struct dentry *lock_parent(struct + { + struct dentry *dir; + +- dir = dget(dentry->d_parent); ++ dir = dget_parent(dentry); + mutex_lock_nested(&(dir->d_inode->i_mutex), I_MUTEX_PARENT); + return dir; + } + +-static void unlock_parent(struct dentry *dentry) +-{ +- mutex_unlock(&(dentry->d_parent->d_inode->i_mutex)); +- dput(dentry->d_parent); +-} +- + static void unlock_dir(struct dentry *dir) + { + mutex_unlock(&dir->d_inode->i_mutex); +@@ -426,8 +420,9 @@ static int ecryptfs_unlink(struct inode + int rc = 0; + struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry); + struct inode *lower_dir_inode = ecryptfs_inode_to_lower(dir); ++ struct dentry *lower_dir_dentry; + +- lock_parent(lower_dentry); ++ lower_dir_dentry = lock_parent(lower_dentry); + rc = vfs_unlink(lower_dir_inode, lower_dentry); + if (rc) { + printk(KERN_ERR "Error in vfs_unlink; rc = [%d]\n", rc); +@@ -439,7 +434,7 @@ static int ecryptfs_unlink(struct inode + dentry->d_inode->i_ctime = dir->i_ctime; + d_drop(dentry); + out_unlock: +- unlock_parent(lower_dentry); ++ unlock_dir(lower_dir_dentry); + return rc; + } + diff --git a/queue-2.6.25/ecryptfs-fix-missed-mutex_unlock.patch b/queue-2.6.25/ecryptfs-fix-missed-mutex_unlock.patch new file mode 100644 index 00000000000..7b9e5b29307 --- /dev/null +++ b/queue-2.6.25/ecryptfs-fix-missed-mutex_unlock.patch @@ -0,0 +1,34 @@ +From stable-bounces@linux.kernel.org Mon Jun 9 13:47:01 2008 +Date: Sun, 8 Jun 2008 11:00:36 +0200 +From: Willy Tarreau +To: stable@kernel.org +Message-ID: <20080608090036.GD6439@1wt.eu> +Content-Disposition: inline +Cc: gorcunov@gmail.com, linux-kernel@vger.kernel.org, mhalcrow@us.ibm.com +Subject: ecryptfs: fix missed mutex_unlock + +From: Cyrill Gorcunov + +upstream commit: 71fd5179e8d1d4d503b517e0c5374f7c49540bfc + +Cc: Michael Halcrow +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + fs/ecryptfs/crypto.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/ecryptfs/crypto.c ++++ b/fs/ecryptfs/crypto.c +@@ -1907,9 +1907,9 @@ int ecryptfs_get_tfm_and_mutex_for_ciphe + goto out; + } + } +- mutex_unlock(&key_tfm_list_mutex); + (*tfm) = key_tfm->key_tfm; + (*tfm_mutex) = &key_tfm->key_tfm_mutex; + out: ++ mutex_unlock(&key_tfm_list_mutex); + return rc; + } diff --git a/queue-2.6.25/ecryptfs-protect-crypt_stat-flags-in-ecryptfs_open.patch b/queue-2.6.25/ecryptfs-protect-crypt_stat-flags-in-ecryptfs_open.patch new file mode 100644 index 00000000000..354f847209b --- /dev/null +++ b/queue-2.6.25/ecryptfs-protect-crypt_stat-flags-in-ecryptfs_open.patch @@ -0,0 +1,36 @@ +From stable-bounces@linux.kernel.org Mon Jun 9 13:45:12 2008 +Date: Sun, 8 Jun 2008 10:58:02 +0200 +From: Willy Tarreau +To: stable@kernel.org +Message-ID: <20080608085802.GB6439@1wt.eu> +Content-Disposition: inline +Cc: linux-kernel@vger.kernel.org, mhalcrow@us.ibm.com, flags in ecryptfs_open() + +From: Michael Halcrow + +upstream commit: 2f9b12a31fcb738ea8c9eb0d4ddf906c6f1d696c + +Make sure crypt_stat->flags is protected with a lock in ecryptfs_open(). + +Signed-off-by: Michael Halcrow +Cc: Al Viro +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + fs/ecryptfs/file.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/fs/ecryptfs/file.c ++++ b/fs/ecryptfs/file.c +@@ -195,7 +195,9 @@ static int ecryptfs_open(struct inode *i + file, ecryptfs_inode_to_private(inode)->lower_file); + if (S_ISDIR(ecryptfs_dentry->d_inode->i_mode)) { + ecryptfs_printk(KERN_DEBUG, "This is a directory\n"); ++ mutex_lock(&crypt_stat->cs_mutex); + crypt_stat->flags &= ~(ECRYPTFS_ENCRYPTED); ++ mutex_unlock(&crypt_stat->cs_mutex); + rc = 0; + goto out; + } diff --git a/queue-2.6.25/ipwireless-fix-blocked-sending.patch b/queue-2.6.25/ipwireless-fix-blocked-sending.patch new file mode 100644 index 00000000000..9e598f638e1 --- /dev/null +++ b/queue-2.6.25/ipwireless-fix-blocked-sending.patch @@ -0,0 +1,125 @@ +From eb4e545d4ac82d9018487edb4419b33b9930c857 Mon Sep 17 00:00:00 2001 +Message-ID: <20080606093225.GA15735@ds.suse.cz> +From: David Sterba +Date: Fri, 6 Jun 2008 10:56:35 +0200 +Subject: ipwireless: Fix blocked sending + +From: David Sterba + +upstream commit: eb4e545d4ac82d9018487edb4419b33b9930c857 + +Packet sending is driven by two flags, tx_ready and tx_queued. +It was possible, that there were queued data for sending and +hardware was flagged as blocked but in fact it was not. + +The tx_queued was indicator but should be really a counter else +first fragmented packet resets tx_queued flag, but there may be +pending packets which do not get sent. + +New semantics: +tx_ready - set, if hw is ready to send packet, no packet is being + transferred right now + set the flag right at the place where data are copied + into hw memory and not earlier without checking if it + was succesful +tx_queued - count of enqueued packets, including fragments + +Tested-by: Michal Rokos +Signed-off-by: David Sterba +Signed-off-by: Jiri Kosina +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + drivers/char/pcmcia/ipwireless/hardware.c | 20 ++++++++++++-------- + 1 file changed, 12 insertions(+), 8 deletions(-) + +--- a/drivers/char/pcmcia/ipwireless/hardware.c ++++ b/drivers/char/pcmcia/ipwireless/hardware.c +@@ -251,10 +251,11 @@ struct ipw_hardware { + int init_loops; + struct timer_list setup_timer; + ++ /* Flag if hw is ready to send next packet */ + int tx_ready; +- struct list_head tx_queue[NL_NUM_OF_PRIORITIES]; +- /* True if any packets are queued for transmission */ ++ /* Count of pending packets to be sent */ + int tx_queued; ++ struct list_head tx_queue[NL_NUM_OF_PRIORITIES]; + + int rx_bytes_queued; + struct list_head rx_queue; +@@ -430,6 +431,8 @@ static int do_send_fragment(struct ipw_h + + spin_lock_irqsave(&hw->spinlock, flags); + ++ hw->tx_ready = 0; ++ + if (hw->hw_version == HW_VERSION_1) { + outw((unsigned short) length, hw->base_port + IODWR); + +@@ -518,6 +521,7 @@ static int do_send_packet(struct ipw_har + + spin_lock_irqsave(&hw->spinlock, flags); + list_add(&packet->queue, &hw->tx_queue[0]); ++ hw->tx_queued++; + spin_unlock_irqrestore(&hw->spinlock, flags); + } else { + if (packet->packet_callback) +@@ -975,12 +979,10 @@ static int send_pending_packet(struct ip + unsigned long flags; + + spin_lock_irqsave(&hw->spinlock, flags); +- if (hw->tx_queued && hw->tx_ready != 0) { ++ if (hw->tx_queued && hw->tx_ready) { + int priority; + struct ipw_tx_packet *packet = NULL; + +- hw->tx_ready--; +- + /* Pick a packet */ + for (priority = 0; priority < priority_limit; priority++) { + if (!list_empty(&hw->tx_queue[priority])) { +@@ -989,6 +991,7 @@ static int send_pending_packet(struct ip + struct ipw_tx_packet, + queue); + ++ hw->tx_queued--; + list_del(&packet->queue); + + break; +@@ -999,6 +1002,7 @@ static int send_pending_packet(struct ip + spin_unlock_irqrestore(&hw->spinlock, flags); + return 0; + } ++ + spin_unlock_irqrestore(&hw->spinlock, flags); + + /* Send */ +@@ -1089,7 +1093,7 @@ static irqreturn_t ipwireless_handle_v1_ + if (irqn & IR_TXINTR) { + ack |= IR_TXINTR; + spin_lock_irqsave(&hw->spinlock, flags); +- hw->tx_ready++; ++ hw->tx_ready = 1; + spin_unlock_irqrestore(&hw->spinlock, flags); + } + /* Received data */ +@@ -1196,7 +1200,7 @@ static irqreturn_t ipwireless_handle_v2_ + if (memrxdone & MEMRX_RX_DONE) { + writew(0, &hw->memory_info_regs->memreg_rx_done); + spin_lock_irqsave(&hw->spinlock, flags); +- hw->tx_ready++; ++ hw->tx_ready = 1; + spin_unlock_irqrestore(&hw->spinlock, flags); + tx = 1; + } +@@ -1260,7 +1264,7 @@ static void send_packet(struct ipw_hardw + + spin_lock_irqsave(&hw->spinlock, flags); + list_add_tail(&packet->queue, &hw->tx_queue[priority]); +- hw->tx_queued = 1; ++ hw->tx_queued++; + spin_unlock_irqrestore(&hw->spinlock, flags); + + flush_packets_to_hw(hw); diff --git a/queue-2.6.25/ps3-fix-frame-buffer-build-error.patch b/queue-2.6.25/ps3-fix-frame-buffer-build-error.patch new file mode 100644 index 00000000000..58ee44ffac8 --- /dev/null +++ b/queue-2.6.25/ps3-fix-frame-buffer-build-error.patch @@ -0,0 +1,39 @@ +From stable-bounces@linux.kernel.org Mon Jun 9 13:53:35 2008 +Message-ID: <484AD2DA.50704@am.sony.com> +Date: Sat, 7 Jun 2008 11:26:34 -0700 +From: Geoff Levand +To: stable@kernel.org +Cc: Chris Wright , Geert Uytterhoeven +Subject: fbdev: export symbol fb_mode_option + +From: Geoff Levand + +upstream commit: 659179b28f15ab1b1db5f8767090f5e728f115a1 + +Frame buffer and mode setting drivers can be built as modules, +so fb_mode_option needs to be exported to support these. + +Prevents this error: + + ERROR: "fb_mode_option" [drivers/ps3/ps3av_mod.ko] undefined! + +Signed-off-by: Geoff Levand +Acked-by: Geert Uytterhoeven +Cc: Krzysztof Helt +Signed-off-by: Andrew Morton SC +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + drivers/video/modedb.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/video/modedb.c ++++ b/drivers/video/modedb.c +@@ -28,6 +28,7 @@ + #endif + + const char *fb_mode_option; ++EXPORT_SYMBOL_GPL(fb_mode_option); + + /* + * Standard video mode definitions (taken from XFree86) diff --git a/queue-2.6.25/series b/queue-2.6.25/series new file mode 100644 index 00000000000..58213d7b57b --- /dev/null +++ b/queue-2.6.25/series @@ -0,0 +1,13 @@ +b43-fix-controller-restart-crash.patch +ipwireless-fix-blocked-sending.patch +add-rd-alias-to-new-brd-ramdisk-driver.patch +ssb-fix-context-assertion-in-ssb_pcicore_dev_irqvecs_enable.patch +double-free-of-inode-on-alloc_file-failure-exit-in-create_write_pipe.patch +alsa-hda-fix-resume-of-auto-config-mode-with-realtek-codecs.patch +sound-emu10k1-fix-system-hang-with-audigy2-zs-notebook-pcmcia-card.patch +ecryptfs-add-missing-lock-around-notify_change.patch +ecryptfs-protect-crypt_stat-flags-in-ecryptfs_open.patch +ecryptfs-clean-up-lock_parent.patch +ecryptfs-fix-missed-mutex_unlock.patch +ps3-fix-frame-buffer-build-error.patch +sunhv-fix-locking-in-non-paged-i-o-case.patch diff --git a/queue-2.6.25/sound-emu10k1-fix-system-hang-with-audigy2-zs-notebook-pcmcia-card.patch b/queue-2.6.25/sound-emu10k1-fix-system-hang-with-audigy2-zs-notebook-pcmcia-card.patch new file mode 100644 index 00000000000..245a9602b97 --- /dev/null +++ b/queue-2.6.25/sound-emu10k1-fix-system-hang-with-audigy2-zs-notebook-pcmcia-card.patch @@ -0,0 +1,83 @@ +From stable-bounces@linux.kernel.org Mon Jun 9 13:34:21 2008 +Date: Sun, 08 Jun 2008 09:27:26 +0200 +Message-ID: +From: Takashi Iwai +To: stable@kernel.org +Subject: sound: emu10k1 - fix system hang with Audigy2 ZS Notebook PCMCIA card + +From: Jaroslav Franek + +upstream commit: 868e15dbd2940f9453b4399117686f408dc77299 + +When the Linux kernel is compiled with CONFIG_DEBUG_SHIRQ=y, +the Soundblaster Audigy2 ZS Notebook PCMCIA card causes the +system hang during boot (udev stage) or when the card is hot-plug. +The CONFIG_DEBUG_SHIRQ flag is by default 'y' with all Fedora +kernels since 2.6.23. The problem was reported as +https://bugzilla.redhat.com/show_bug.cgi?id=326411 + +The issue was hunted down to the snd_emu10k1_create() routine: + +/* pseudo-code */ +snd_emu10k1_create(...) { + ... + request_irq(... IRQF_SHARED ...) { + register the irq handler + #ifdef CONFIG_DEBUG_SHIRQ + call the irq handler: snd_emu10k1_interrupt() { + poll I/O port // <---- !! system hangs + ... + } + #endif + } + ... + snd_emu10k1_cardbus_init(...) { + initialize I/O ports + } + ... +} + +The early access to I/O port in the interrupt handler causes +the freeze. Obviously it is necessary to init the I/O ports +before accessing them. This patch moves the registration of +the irq handler after the initialization of the I/O ports. + +Signed-off-by: Jaroslav Franek +Acked-by: James Courtier-Dutton +Signed-off-by: Takashi Iwai +Signed-off-by: Chris Wright +--- + sound/pci/emu10k1/emu10k1_main.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +--- a/sound/pci/emu10k1/emu10k1_main.c ++++ b/sound/pci/emu10k1/emu10k1_main.c +@@ -1817,13 +1817,6 @@ int __devinit snd_emu10k1_create(struct + } + emu->port = pci_resource_start(pci, 0); + +- if (request_irq(pci->irq, snd_emu10k1_interrupt, IRQF_SHARED, +- "EMU10K1", emu)) { +- err = -EBUSY; +- goto error; +- } +- emu->irq = pci->irq; +- + emu->max_cache_pages = max_cache_bytes >> PAGE_SHIFT; + if (snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, snd_dma_pci_data(pci), + 32 * 1024, &emu->ptb_pages) < 0) { +@@ -1886,6 +1879,14 @@ int __devinit snd_emu10k1_create(struct + emu->fx8010.etram_pages.area = NULL; + emu->fx8010.etram_pages.bytes = 0; + ++ /* irq handler must be registered after I/O ports are activated */ ++ if (request_irq(pci->irq, snd_emu10k1_interrupt, IRQF_SHARED, ++ "EMU10K1", emu)) { ++ err = -EBUSY; ++ goto error; ++ } ++ emu->irq = pci->irq; ++ + /* + * Init to 0x02109204 : + * Clock accuracy = 0 (1000ppm) diff --git a/queue-2.6.25/ssb-fix-context-assertion-in-ssb_pcicore_dev_irqvecs_enable.patch b/queue-2.6.25/ssb-fix-context-assertion-in-ssb_pcicore_dev_irqvecs_enable.patch new file mode 100644 index 00000000000..cd6a23bbf07 --- /dev/null +++ b/queue-2.6.25/ssb-fix-context-assertion-in-ssb_pcicore_dev_irqvecs_enable.patch @@ -0,0 +1,45 @@ +From stable-bounces@linux.kernel.org Mon Jun 9 13:26:37 2008 +From: Michael Buesch +To: stable@kernel.org +Date: Sat, 7 Jun 2008 17:57:37 +0200 +Content-Disposition: inline +Message-Id: <200806071757.38139.mb@bu3sch.de> +Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org +Subject: ssb: Fix context assertion in ssb_pcicore_dev_irqvecs_enable + +From: Michael Buesch + +upstream commit: a3bafeedfff2ac5fa0a316bea4570e27900b6fcc + +This fixes a context assertion in ssb that makes b44 print +out warnings on resume. + +This fixes the following kernel oops: +http://www.kerneloops.org/oops.php?number=12732 +http://www.kerneloops.org/oops.php?number=11410 + +Signed-off-by: Michael Buesch +Signed-off-by: John W. Linville +Signed-off-by: Chris Wright + +--- + drivers/ssb/driver_pcicore.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/ssb/driver_pcicore.c ++++ b/drivers/ssb/driver_pcicore.c +@@ -519,12 +519,12 @@ int ssb_pcicore_dev_irqvecs_enable(struc + int err = 0; + u32 tmp; + +- might_sleep(); +- + if (!pdev) + goto out; + bus = pdev->bus; + ++ might_sleep_if(pdev->id.coreid != SSB_DEV_PCI); ++ + /* Enable interrupts for this device. */ + if (bus->host_pci && + ((pdev->id.revision >= 6) || (pdev->id.coreid == SSB_DEV_PCIE))) { diff --git a/queue-2.6.25/sunhv-fix-locking-in-non-paged-i-o-case.patch b/queue-2.6.25/sunhv-fix-locking-in-non-paged-i-o-case.patch new file mode 100644 index 00000000000..0ca012d7e42 --- /dev/null +++ b/queue-2.6.25/sunhv-fix-locking-in-non-paged-i-o-case.patch @@ -0,0 +1,30 @@ +From stable-bounces@linux.kernel.org Mon Jun 9 13:54:47 2008 +Date: Mon, 09 Jun 2008 13:49:22 -0700 (PDT) +Message-Id: <20080609.134922.94280325.davem@davemloft.net> +To: stable@kernel.org +From: David Miller +Subject: sunhv: Fix locking in non-paged I/O case. + +From: David S. Miller + +[ upstream commit: 3651751fff44ede58f65cbb1e39242139ead251b ] + +This causes the lock to be taken twice, thus resulting in +a deadlock. + +Signed-off-by: David S. Miller +Signed-off-by: Chris Wright +--- + drivers/serial/sunhv.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/drivers/serial/sunhv.c ++++ b/drivers/serial/sunhv.c +@@ -499,7 +499,6 @@ static void sunhv_console_write_bychar(s + } else + spin_lock(&port->lock); + +- spin_lock_irqsave(&port->lock, flags); + for (i = 0; i < n; i++) { + if (*s == '\n') + sunhv_console_putchar(port, '\r'); -- 2.47.3