X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=kernel-small_fixes.patch;h=1fbd7c139408c56eeeec5bf7b1f8c086a8440c98;hb=234da52fc4c0749529be74422c132f4a5f391a1a;hp=cc9d901e5f6fbcba8071d2dbd5026c95f1b20533;hpb=c8aa6c218c9ab16d0bbab138f68acdb88310de5b;p=packages%2Fkernel.git diff --git a/kernel-small_fixes.patch b/kernel-small_fixes.patch index cc9d901e..1fbd7c13 100644 --- a/kernel-small_fixes.patch +++ b/kernel-small_fixes.patch @@ -1,13 +1,3 @@ ---- linux-2.6.32/drivers/infiniband/Kconfig~ 2009-12-05 00:26:03.663774916 +0100 -+++ linux-2.6.32/drivers/infiniband/Kconfig 2009-12-05 00:26:05.914179759 +0100 -@@ -37,7 +37,6 @@ - config INFINIBAND_ADDR_TRANS - bool - depends on INET -- depends on !(INFINIBAND = y && IPV6 = m) - default y - - source "drivers/infiniband/hw/mthca/Kconfig" --- linux-2.6.33/scripts/mod/modpost.c~ 2010-02-24 19:52:17.000000000 +0100 +++ linux-2.6.33/scripts/mod/modpost.c 2010-03-07 14:26:47.242168558 +0100 @@ -15,7 +15,8 @@ @@ -21,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/sky2.c a/drivers/net/sky2.c -index 2494842..edf37aa 100644 ---- b/drivers/net/sky2.c -+++ a/drivers/net/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 @@ @@ -151,107 +26,80 @@ Please read the FAQ at http://www.tux.org/lkml/ exit fi done - - -Fixes a possible memory corruption when the link is larger than -MAXPATHLEN and XFS_DEBUG is not enabled. This also remove the -S_ISLNK assert, since the inode mode is checked previously in -xfs_readlink_by_handle() and via VFS. - -Signed-off-by: Carlos Maiolino +From 5d12f71723762a39435d054d02bbf5fb87c5cd14 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= +Date: Mon, 6 Feb 2017 14:45:15 +0100 +Subject: [PATCH] mac80211: Print text for disassociation reason +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When disassociation happens only numeric reason is printed +in ieee80211_rx_mgmt_disassoc(). Add text variant, too. + +Signed-off-by: Arkadiusz Miśkiewicz --- - fs/xfs/xfs_vnodeops.c | 11 ++++++++--- - 1 files changed, 8 insertions(+), 3 deletions(-) - -diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c -index 51fc429..c3288be 100644 ---- a/fs/xfs/xfs_vnodeops.c -+++ b/fs/xfs/xfs_vnodeops.c -@@ -123,13 +123,18 @@ xfs_readlink( + net/mac80211/mlme.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c +index 098ce9b179ee..fcf8d0aa66ec 100644 +--- a/net/mac80211/mlme.c ++++ b/net/mac80211/mlme.c +@@ -2801,8 +2801,9 @@ static void ieee80211_rx_mgmt_disassoc(struct ieee80211_sub_if_data *sdata, + + reason_code = le16_to_cpu(mgmt->u.disassoc.reason_code); - xfs_ilock(ip, XFS_ILOCK_SHARED); +- sdata_info(sdata, "disassociated from %pM (Reason: %u)\n", +- mgmt->sa, reason_code); ++ sdata_info(sdata, "disassociated from %pM (Reason: %u=%s)\n", ++ mgmt->sa, reason_code, ++ ieee80211_get_reason_code_string(reason_code)); -- ASSERT(S_ISLNK(ip->i_d.di_mode)); -- ASSERT(ip->i_d.di_size <= MAXPATHLEN); -- - pathlen = ip->i_d.di_size; - if (!pathlen) - goto out; + ieee80211_set_disassoc(sdata, 0, 0, false, NULL); -+ if (pathlen > MAXPATHLEN) { -+ xfs_alert(mp, "%s: inode (%llu) symlink length (%d) too long", -+ __func__, (unsigned long long)ip->i_ino, pathlen); -+ ASSERT(0); -+ return XFS_ERROR(EFSCORRUPTED); -+ } -+ -+ - if (ip->i_df.if_flags & XFS_IFINLINE) { - memcpy(link, ip->i_df.if_u1.if_data, pathlen); - link[pathlen] = '\0'; -- -1.7.6.2 - -_______________________________________________ -xfs mailing list -xfs@oss.sgi.com -http://oss.sgi.com/mailman/listinfo/xfs - -An integer overflow will happen on 64bit archs if task's sum of rss, swapents -and nr_ptes exceeds (2^31)/1000 value. This was introduced by commit - -f755a04 oom: use pte pages in OOM score - -where the oom score computation was divided into several steps and it's no -longer computed as one expression in unsigned long(rss, swapents, nr_pte are -unsigned long), where the result value assigned to points(int) is in -range(1..1000). So there could be an int overflow while computing - -176 points *= 1000; +2.11.0 -and points may have negative value. Meaning the oom score for a mem hog task -will be one. +From: Shaohua Li -196 if (points <= 0) -197 return 1; +Basically this is a copy of commit 001e4a8775f6(ext4: implement cgroup +writeback support). Tested with a fio test, verified writeback is +throttled against cgroup io.max write bandwidth, also verified moving +the fio test to another cgroup and the writeback is throttled against +new cgroup setting. -For example: -[ 3366] 0 3366 35390480 24303939 5 0 0 oom01 -Out of memory: Kill process 3366 (oom01) score 1 or sacrifice child - -Here the oom1 process consumes more than 24303939(rss)*4096~=92GB physical -memory, but it's oom score is one. - -In this situation the mem hog task is skipped and oom killer kills another and -most probably innocent task with oom score greater than one. - -The points variable should be of type long instead of int to prevent the int -overflow. - -Signed-off-by: Frantisek Hrbata +Cc: Tejun Heo +Signed-off-by: Shaohua Li --- - mm/oom_kill.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/mm/oom_kill.c b/mm/oom_kill.c -index 626303b..e9a1785 100644 ---- a/mm/oom_kill.c -+++ b/mm/oom_kill.c -@@ -162,7 +162,7 @@ static bool oom_unkillable_task(struct task_struct *p, - unsigned int oom_badness(struct task_struct *p, struct mem_cgroup *mem, - const nodemask_t *nodemask, unsigned long totalpages) - { -- int points; -+ long points; + fs/xfs/xfs_aops.c | 2 ++ + fs/xfs/xfs_super.c | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c +index f18e593..6535054 100644 +--- a/fs/xfs/xfs_aops.c ++++ b/fs/xfs/xfs_aops.c +@@ -630,8 +630,10 @@ xfs_add_to_ioend( + if (wpc->ioend) + list_add(&wpc->ioend->io_list, iolist); + wpc->ioend = xfs_alloc_ioend(inode, wpc->io_type, offset, bh); ++ wbc_init_bio(wbc, wpc->ioend->io_bio); + } - if (oom_unkillable_task(p, mem, nodemask)) - return 0; --- -1.7.6.4 - --- -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/ - ++ wbc_account_io(wbc, bh->b_page, bh->b_size); + /* + * If the buffer doesn't fit into the bio we need to allocate a new + * one. This shouldn't happen more than once for a given buffer. +diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c +index 584cf2d..aea3bc2 100644 +--- a/fs/xfs/xfs_super.c ++++ b/fs/xfs/xfs_super.c +@@ -1634,6 +1634,7 @@ xfs_fs_fill_super( + sb->s_max_links = XFS_MAXLINK; + sb->s_time_gran = 1; + set_posix_acl_flag(sb); ++ sb->s_iflags |= SB_I_CGROUPWB; + + /* version 5 superblocks support inode version counters. */ + if (XFS_SB_VERSION_NUM(&mp->m_sb) == XFS_SB_VERSION_5)