Linux v3.4.6
This commit is contained in:
parent
e3521339a4
commit
b51c09f7b5
|
@ -1,44 +0,0 @@
|
|||
From: Bob Moore <robert.moore@intel.com>
|
||||
|
||||
Fixes a problem that can occur when a lone package object is
|
||||
wrapped with an outer package object in order to conform to
|
||||
the ACPI specification. Can affect these predefined names:
|
||||
_ALR,_MLS,_PSS,_TRT,_TSS,_PRT,_HPX,_DLM,_CSD,_PSD,_TSD
|
||||
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=44171
|
||||
|
||||
Reported-by: Vlastimil Babka <caster@gentoo.org>
|
||||
Signed-off-by: Bob Moore <robert.moore@intel.com>
|
||||
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
|
||||
---
|
||||
|
||||
Len,
|
||||
|
||||
This is an important bug fix.
|
||||
Could you merge it?
|
||||
|
||||
drivers/acpi/acpica/nspredef.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/drivers/acpi/acpica/nspredef.c b/drivers/acpi/acpica/nspredef.c
|
||||
index 23ce096..fe66260 100644
|
||||
--- a/drivers/acpi/acpica/nspredef.c
|
||||
+++ b/drivers/acpi/acpica/nspredef.c
|
||||
@@ -638,7 +638,7 @@ acpi_ns_check_package(struct acpi_predefined_data *data,
|
||||
/* Create the new outer package and populate it */
|
||||
|
||||
status =
|
||||
- acpi_ns_wrap_with_package(data, *elements,
|
||||
+ acpi_ns_wrap_with_package(data, return_object,
|
||||
return_object_ptr);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return (status);
|
||||
--
|
||||
1.7.2.5
|
||||
|
||||
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
|
@ -1,153 +0,0 @@
|
|||
|
||||
Delivered-To: jwboyer@gmail.com
|
||||
Received: by 10.229.191.66 with SMTP id dl2csp36421qcb;
|
||||
Tue, 26 Jun 2012 07:55:48 -0700 (PDT)
|
||||
Received: by 10.68.228.136 with SMTP id si8mr53042278pbc.159.1340722548310;
|
||||
Tue, 26 Jun 2012 07:55:48 -0700 (PDT)
|
||||
Return-Path: <stable-owner@vger.kernel.org>
|
||||
Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67])
|
||||
by mx.google.com with ESMTP id qg1si15735731pbc.300.2012.06.26.07.55.47;
|
||||
Tue, 26 Jun 2012 07:55:48 -0700 (PDT)
|
||||
Received-SPF: pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67;
|
||||
Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of stable-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mail=stable-owner@vger.kernel.org
|
||||
Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
||||
id S1757370Ab2FZOzp (ORCPT <rfc822;aaditya.kumar.30@gmail.com>
|
||||
+ 23 others); Tue, 26 Jun 2012 10:55:45 -0400
|
||||
Received: from mx1.redhat.com ([209.132.183.28]:64097 "EHLO mx1.redhat.com"
|
||||
rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP
|
||||
id S1757325Ab2FZOzo (ORCPT <rfc822;stable@vger.kernel.org>);
|
||||
Tue, 26 Jun 2012 10:55:44 -0400
|
||||
Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11])
|
||||
by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q5QEtbK2017450
|
||||
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK);
|
||||
Tue, 26 Jun 2012 10:55:38 -0400
|
||||
Received: from segfault.boston.devel.redhat.com (segfault.boston.devel.redhat.com [10.16.60.26])
|
||||
by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q5QEtZV9023431;
|
||||
Tue, 26 Jun 2012 10:55:35 -0400
|
||||
From: Jeff Moyer <jmoyer@redhat.com>
|
||||
To: Jens Axboe <jaxboe@fusionio.com>, Nick Piggin <npiggin@kernel.dk>
|
||||
Cc: LKML List <linux-kernel@vger.kernel.org>,
|
||||
torsten.hilbrich@secunet.com, Richard Jones <rjones@redhat.com>,
|
||||
stable@vger.kernel.org, Marcos Mello <marcosfrm@gmail.com>
|
||||
Subject: [patch] block: fix infinite loop in __getblk_slow
|
||||
X-PGP-KeyID: 1F78E1B4
|
||||
X-PGP-CertKey: F6FE 280D 8293 F72C 65FD 5A58 1FF8 A7CA 1F78 E1B4
|
||||
X-PCLoadLetter: What the f**k does that mean?
|
||||
Date: Tue, 26 Jun 2012 10:55:34 -0400
|
||||
Message-ID: <x49r4t2rul5.fsf@segfault.boston.devel.redhat.com>
|
||||
User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.1 (gnu/linux)
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11
|
||||
Sender: stable-owner@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <stable.vger.kernel.org>
|
||||
X-Mailing-List: stable@vger.kernel.org
|
||||
|
||||
Hi,
|
||||
|
||||
This commit:
|
||||
|
||||
commit 080399aaaf3531f5b8761ec0ac30ff98891e8686
|
||||
Author: Jeff Moyer <jmoyer@redhat.com>
|
||||
Date: Fri May 11 16:34:10 2012 +0200
|
||||
|
||||
block: don't mark buffers beyond end of disk as mapped
|
||||
|
||||
exposed a bug in __getblk_slow that causes mount to hang as it loops
|
||||
infinitely waiting for a buffer that lies beyond the end of the disk to
|
||||
become uptodate. The problem was initially reported by Torsten Hilbrich
|
||||
here: https://lkml.org/lkml/2012/6/18/54, and also reported
|
||||
independently here:
|
||||
http://www.sysresccd.org/forums/viewtopic.php?f=13&t=4511, and then
|
||||
Richard W.M. Jones and Marcos Mello noted a few separate bugzillas also
|
||||
associated with the same issue.
|
||||
|
||||
The main problem is here, in __getblk_slow:
|
||||
|
||||
for (;;) {
|
||||
struct buffer_head * bh;
|
||||
int ret;
|
||||
|
||||
bh = __find_get_block(bdev, block, size);
|
||||
if (bh)
|
||||
return bh;
|
||||
|
||||
ret = grow_buffers(bdev, block, size);
|
||||
if (ret < 0)
|
||||
return NULL;
|
||||
if (ret == 0)
|
||||
free_more_memory();
|
||||
}
|
||||
|
||||
__find_get_block does not find the block, since it will not be marked as
|
||||
mapped, and so grow_buffers is called to fill in the buffers for the
|
||||
associated page. I believe the for (;;) loop is there primarily to
|
||||
retry in the case of memory pressure keeping grow_buffers from
|
||||
succeeding. However, we also continue to loop for other cases, like the
|
||||
block lying beond the end of the disk. So, the fix I came up with is to
|
||||
only loop when grow_buffers fails due to memory allocation issues
|
||||
(return value of 0).
|
||||
|
||||
The attached patch was tested by myself, Torsten, and Rich, and was
|
||||
found to resolve the problem in call cases.
|
||||
|
||||
Comments, as always, are appreciated.
|
||||
|
||||
Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
|
||||
Reported-and-Tested-by: Torsten Hilbrich <torsten.hilbrich@secunet.com>
|
||||
Tested-by: Richard W.M. Jones <rjones@redhat.com>
|
||||
Cc: Stable <stable@vger.kernel.org>
|
||||
|
||||
--
|
||||
Stable Notes: this patch requires backport to 3.0, 3.2 and 3.3.
|
||||
|
||||
diff --git a/fs/buffer.c b/fs/buffer.c
|
||||
index 838a9cf..c7062c8 100644
|
||||
--- a/fs/buffer.c
|
||||
+++ b/fs/buffer.c
|
||||
@@ -1036,6 +1036,9 @@ grow_buffers(struct block_device *bdev, sector_t block, int size)
|
||||
static struct buffer_head *
|
||||
__getblk_slow(struct block_device *bdev, sector_t block, int size)
|
||||
{
|
||||
+ int ret;
|
||||
+ struct buffer_head *bh;
|
||||
+
|
||||
/* Size must be multiple of hard sectorsize */
|
||||
if (unlikely(size & (bdev_logical_block_size(bdev)-1) ||
|
||||
(size < 512 || size > PAGE_SIZE))) {
|
||||
@@ -1048,20 +1051,21 @@ __getblk_slow(struct block_device *bdev, sector_t block, int size)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- for (;;) {
|
||||
- struct buffer_head * bh;
|
||||
- int ret;
|
||||
+retry:
|
||||
+ bh = __find_get_block(bdev, block, size);
|
||||
+ if (bh)
|
||||
+ return bh;
|
||||
|
||||
+ ret = grow_buffers(bdev, block, size);
|
||||
+ if (ret == 0) {
|
||||
+ free_more_memory();
|
||||
+ goto retry;
|
||||
+ } else if (ret > 0) {
|
||||
bh = __find_get_block(bdev, block, size);
|
||||
if (bh)
|
||||
return bh;
|
||||
-
|
||||
- ret = grow_buffers(bdev, block, size);
|
||||
- if (ret < 0)
|
||||
- return NULL;
|
||||
- if (ret == 0)
|
||||
- free_more_memory();
|
||||
}
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe stable" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
25
kernel.spec
25
kernel.spec
|
@ -54,7 +54,7 @@ Summary: The Linux kernel
|
|||
# For non-released -rc kernels, this will be appended after the rcX and
|
||||
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
|
||||
#
|
||||
%global baserelease 3
|
||||
%global baserelease 1
|
||||
%global fedora_build %{baserelease}
|
||||
|
||||
# base_sublevel is the kernel version we're starting with and patching
|
||||
|
@ -66,7 +66,7 @@ Summary: The Linux kernel
|
|||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 5
|
||||
%define stable_update 6
|
||||
# Is it a -stable RC?
|
||||
%define stable_rc 0
|
||||
# Set rpm version accordingly
|
||||
|
@ -764,19 +764,10 @@ Patch22017: 0001-drm-radeon-don-t-mess-with-hot-plug-detect-for-eDP-o.patch
|
|||
#rhbz 749276
|
||||
Patch22018: atl1c_net_next_update-3.4.patch
|
||||
|
||||
#rhbz 835019
|
||||
Patch22036: block-fix-infinite-loop-in-__getblk_slow.patch
|
||||
|
||||
#rhbz 828824
|
||||
Patch22043: rt2x00usb-fix-indexes-ordering-on-RX-queue-kick.patch
|
||||
|
||||
#Fix FIPS for aesni hardare
|
||||
Patch22055: crypto-testmgr-allow-aesni-intel-and-ghash_clmulni-intel.patch
|
||||
Patch22056: crypto-aesni-intel-fix-wrong-kfree-pointer.patch
|
||||
|
||||
#rhbz 834318
|
||||
Patch22057: ACPICA-Fix-possible-fault-in-return-package-object-repair-code.patch
|
||||
|
||||
#rhbz 772730
|
||||
Patch22058: ACPI-AC-check-the-return-value-of-power_supply_register.patch
|
||||
|
||||
|
@ -1484,19 +1475,10 @@ ApplyPatch 0001-drm-radeon-don-t-mess-with-hot-plug-detect-for-eDP-o.patch
|
|||
#rhbz 749276
|
||||
ApplyPatch atl1c_net_next_update-3.4.patch
|
||||
|
||||
#rhbz 835019
|
||||
ApplyPatch block-fix-infinite-loop-in-__getblk_slow.patch
|
||||
|
||||
#rhbz 828824
|
||||
ApplyPatch rt2x00usb-fix-indexes-ordering-on-RX-queue-kick.patch
|
||||
|
||||
#Fix FIPS for aesni hardare
|
||||
ApplyPatch crypto-testmgr-allow-aesni-intel-and-ghash_clmulni-intel.patch
|
||||
ApplyPatch crypto-aesni-intel-fix-wrong-kfree-pointer.patch
|
||||
|
||||
#rhbz 834318
|
||||
ApplyPatch ACPICA-Fix-possible-fault-in-return-package-object-repair-code.patch
|
||||
|
||||
#rhbz 772730
|
||||
ApplyPatch ACPI-AC-check-the-return-value-of-power_supply_register.patch
|
||||
|
||||
|
@ -2360,6 +2342,9 @@ fi
|
|||
# '-' | |
|
||||
# '-'
|
||||
%changelog
|
||||
* Thu Jul 19 2012 Josh Boyer <jwboyer@redhat.com> - 3.4.6-1
|
||||
- Linux v3.4.6
|
||||
|
||||
* Wed Jul 18 2012 Josh Boyer <jwboyer@redhat.com>
|
||||
- check return value of power_supply_register from Lan Tianyu (rhbz 772730)
|
||||
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
From e899a84a6e9bec0ce653713a48ca121cd754430c Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Mon, 2 Jul 2012 09:42:14 +0200
|
||||
Subject: [PATCH] rt2x00usb: fix indexes ordering on RX queue kick
|
||||
|
||||
On rt2x00_dmastart() we increase index specified by Q_INDEX and on
|
||||
rt2x00_dmadone() we increase index specified by Q_INDEX_DONE. So entries
|
||||
between Q_INDEX_DONE and Q_INDEX are those we currently process in the
|
||||
hardware. Entries between Q_INDEX and Q_INDEX_DONE are those we can
|
||||
submit to the hardware.
|
||||
|
||||
According to that fix rt2x00usb_kick_queue(), as we need to submit rx
|
||||
entries that are not processed by the hardware. It worked before only
|
||||
for empty queue, otherwise was broken.
|
||||
|
||||
Note that for TX queues indexes ordering are ok. We need to kick entries
|
||||
that have filled skb, but was not submitted to the hardware, i.e.
|
||||
strted from Q_INDEX_DONE and have ENTRY_DATA_PENDING bit set.
|
||||
|
||||
From practical standpoint this patch fixes AP mode connection hangs.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2x00usb.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
|
||||
index d357d1e..74ecc33 100644
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
|
||||
@@ -436,8 +436,8 @@ void rt2x00usb_kick_queue(struct data_queue *queue)
|
||||
case QID_RX:
|
||||
if (!rt2x00queue_full(queue))
|
||||
rt2x00queue_for_each_entry(queue,
|
||||
- Q_INDEX_DONE,
|
||||
Q_INDEX,
|
||||
+ Q_INDEX_DONE,
|
||||
NULL,
|
||||
rt2x00usb_kick_rx_entry);
|
||||
break;
|
||||
--
|
||||
1.7.1
|
||||
|
Loading…
Reference in New Issue