X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=kernel-small_fixes.patch;h=d4b603499b05f64e51b96e527678c26a94700ef8;hb=2f196652b342e4415a4894c1d4cf236229be3af1;hp=90db21965cf1fdf281ee17796ebb7e0ed16605c4;hpb=c27c5299c5d11c4dfc4b52387af30934e91eb457;p=packages%2Fkernel.git diff --git a/kernel-small_fixes.patch b/kernel-small_fixes.patch index 90db2196..d4b60349 100644 --- a/kernel-small_fixes.patch +++ b/kernel-small_fixes.patch @@ -11,121 +11,6 @@ /* Some toolchains use a `_' prefix for all user symbols. */ -commit 87b09f1f25cd1e01d7c50bf423c7fe33027d7511 -Author: stephen hemminger -Date: Fri Feb 12 06:58:00 2010 +0000 - - sky2: dont enable PME legacy mode - - This bit is not changed by vendor driver, and should be left alone. - The documentation implies this a debug bit. - 0 = WAKE# only asserted when VMAIN not available - 1 = WAKE# is depend on wake events and independent of VMAIN. - - Signed-off-by: Stephen Hemminger - Signed-off-by: David S. Miller - -diff --git b/drivers/net/ethernet/marvell/sky2.c a/drivers/net/ethernet/marvell/sky2.c -index 2494842..edf37aa 100644 ---- b/drivers/net/ethernet/marvell/sky2.c -+++ a/drivers/net/ethernet/marvell/sky2.c -@@ -733,6 +733,7 @@ static void sky2_wol_init(struct sky2_port *sky2) - unsigned port = sky2->port; - enum flow_control save_mode; - u16 ctrl; -+ u32 reg1; - - /* Bring hardware out of reset */ - sky2_write16(hw, B0_CTST, CS_RST_CLR); -@@ -786,6 +787,11 @@ static void sky2_wol_init(struct sky2_port *sky2) - /* Disable PiG firmware */ - sky2_write16(hw, B0_CTST, Y2_HW_WOL_OFF); - -+ /* Turn on legacy PCI-Express PME mode */ -+ reg1 = sky2_pci_read32(hw, PCI_DEV_REG1); -+ reg1 |= PCI_Y2_PME_LEGACY; -+ sky2_pci_write32(hw, PCI_DEV_REG1, reg1); -+ - /* block receiver */ - sky2_write8(hw, SK_REG(port, RX_GMF_CTRL_T), GMF_RST_SET); - } -On Sat, 2 Jul 2011, Andi Kleen wrote: - -> > The problem is that blk_peek_request() calls scsi_prep_fn(), which -> > does this: -> > -> > struct scsi_device *sdev = q->queuedata; -> > int ret = BLKPREP_KILL; -> > -> > if (req->cmd_type == REQ_TYPE_BLOCK_PC) -> > ret = scsi_setup_blk_pc_cmnd(sdev, req); -> > return scsi_prep_return(q, req, ret); -> > -> > It doesn't check to see if sdev is NULL, nor does -> > scsi_setup_blk_pc_cmnd(). That accounts for this error: -> -> I actually added a NULL check in scsi_setup_blk_pc_cmnd early on, -> but that just caused RCU CPU stalls afterwards and then eventually -> a hung system. - -The RCU problem is likely to be a separate issue. It might even be a -result of the use-after-free problem with the elevator. - -At any rate, it's clear that the crash in the refcounting log you -posted occurred because scsi_setup_blk_pc_cmnd() called -scsi_prep_state_check(), which tried to dereference the NULL pointer. - -Would you like to try this patch to see if it fixes the problem? As I -said before, I'm not certain it's the best thing to do, but it worked -on my system. - -Alan Stern - - - - -Index: usb-3.0/drivers/scsi/scsi_lib.c -=================================================================== ---- usb-3.0.orig/drivers/scsi/scsi_lib.c -+++ usb-3.0/drivers/scsi/scsi_lib.c -@@ -1247,6 +1247,8 @@ int scsi_prep_fn(struct request_queue *q - struct scsi_device *sdev = q->queuedata; - int ret = BLKPREP_KILL; - -+ if (!sdev) -+ return ret; - if (req->cmd_type == REQ_TYPE_BLOCK_PC) - ret = scsi_setup_blk_pc_cmnd(sdev, req); - return scsi_prep_return(q, req, ret); -Index: usb-3.0/drivers/scsi/scsi_sysfs.c -=================================================================== ---- usb-3.0.orig/drivers/scsi/scsi_sysfs.c -+++ usb-3.0/drivers/scsi/scsi_sysfs.c -@@ -322,6 +322,8 @@ static void scsi_device_dev_release_user - kfree(evt); - } - -+ /* Freeing the queue signals to block that we're done */ -+ scsi_free_queue(sdev->request_queue); - blk_put_queue(sdev->request_queue); - /* NULL queue means the device can't be used */ - sdev->request_queue = NULL; -@@ -936,8 +938,6 @@ void __scsi_remove_device(struct scsi_de - /* cause the request function to reject all I/O requests */ - sdev->request_queue->queuedata = NULL; - -- /* Freeing the queue signals to block that we're done */ -- scsi_free_queue(sdev->request_queue); - put_device(dev); - } - - - --- -To unsubscribe from this list: send the line "unsubscribe linux-kernel" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html -Please read the FAQ at http://www.tux.org/lkml/ --- linux-3.0/scripts/kconfig/lxdialog/check-lxdialog.sh~ 2011-07-22 04:17:23.000000000 +0200 +++ linux-3.0/scripts/kconfig/lxdialog/check-lxdialog.sh 2011-08-25 21:26:04.799150642 +0200 @@ -9,6 +9,12 @@ @@ -141,6 +26,3 @@ Please read the FAQ at http://www.tux.org/lkml/ exit fi done - - -