Update to the Linux 3.0.8 stable release
This commit is contained in:
parent
5d467e53f1
commit
1c1043840b
|
@ -1,120 +0,0 @@
|
|||
Return-Path: kernel-bounces@lists.fedoraproject.org
|
||||
Received: from zmta02.collab.prod.int.phx2.redhat.com (LHLO
|
||||
zmta02.collab.prod.int.phx2.redhat.com) (10.5.5.32) by
|
||||
mail02.corp.redhat.com with LMTP; Thu, 25 Aug 2011 10:45:29 -0400 (EDT)
|
||||
Received: from localhost (localhost.localdomain [127.0.0.1])
|
||||
by zmta02.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id D94C212A429;
|
||||
Thu, 25 Aug 2011 10:40:08 -0400 (EDT)
|
||||
X-Quarantine-ID: <C-k2lztK9Aht>
|
||||
Received: from zmta02.collab.prod.int.phx2.redhat.com ([127.0.0.1])
|
||||
by localhost (zmta02.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024)
|
||||
with ESMTP id C-k2lztK9Aht; Thu, 25 Aug 2011 10:40:08 -0400 (EDT)
|
||||
Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22])
|
||||
by zmta02.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 99EEE12A424;
|
||||
Thu, 25 Aug 2011 10:40:08 -0400 (EDT)
|
||||
Received: from mx1.redhat.com (ext-mx12.extmail.prod.ext.phx2.redhat.com [10.5.110.17])
|
||||
by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p7PEe7jY023291;
|
||||
Thu, 25 Aug 2011 10:40:08 -0400
|
||||
Received: from bastion.fedoraproject.org (bastion02.phx2.fedoraproject.org [10.5.126.11])
|
||||
by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p7PEe54S022197;
|
||||
Thu, 25 Aug 2011 10:40:05 -0400
|
||||
Received: from lists.fedoraproject.org (collab1.vpn.fedoraproject.org [192.168.1.21])
|
||||
by bastion02.phx2.fedoraproject.org (Postfix) with ESMTP id E3F1D1108EB;
|
||||
Thu, 25 Aug 2011 14:40:04 +0000 (UTC)
|
||||
Received: from collab1.fedoraproject.org (localhost.localdomain [127.0.0.1])
|
||||
by lists.fedoraproject.org (Postfix) with ESMTP id 52AA23267A7;
|
||||
Thu, 25 Aug 2011 14:40:04 +0000 (UTC)
|
||||
X-Original-To: kernel@lists.fedoraproject.org
|
||||
Delivered-To: kernel@lists.fedoraproject.org
|
||||
Received: from smtp-mm02.fedoraproject.org (smtp-mm02.fedoraproject.org
|
||||
[66.35.62.164])
|
||||
by lists.fedoraproject.org (Postfix) with ESMTP id 8FD8232679C
|
||||
for <kernel@lists.fedoraproject.org>;
|
||||
Thu, 25 Aug 2011 14:40:01 +0000 (UTC)
|
||||
Received: from mail-gx0-f173.google.com (mail-gx0-f173.google.com
|
||||
[209.85.161.173])
|
||||
by smtp-mm02.fedoraproject.org (Postfix) with ESMTP id 42F73E721F
|
||||
for <kernel@lists.fedoraproject.org>;
|
||||
Thu, 25 Aug 2011 14:40:01 +0000 (UTC)
|
||||
Received: by gxk26 with SMTP id 26so2067938gxk.32
|
||||
for <kernel@lists.fedoraproject.org>;
|
||||
Thu, 25 Aug 2011 07:40:00 -0700 (PDT)
|
||||
Received: by 10.91.21.4 with SMTP id y4mr6531700agi.115.1314283200592;
|
||||
Thu, 25 Aug 2011 07:40:00 -0700 (PDT)
|
||||
Received: from salusa.poochiereds.net (cpe-075-177-182-191.nc.res.rr.com
|
||||
[75.177.182.191])
|
||||
by mx.google.com with ESMTPS id l13sm579931anj.16.2011.08.25.07.39.59
|
||||
(version=SSLv3 cipher=OTHER); Thu, 25 Aug 2011 07:40:00 -0700 (PDT)
|
||||
From: Jeff Layton <jlayton@redhat.com>
|
||||
To: kernel@lists.fedoraproject.org
|
||||
Subject: [PATCH 2/2] CIFS: Fix ERR_PTR dereference in cifs_get_root
|
||||
Date: Thu, 25 Aug 2011 10:39:54 -0400
|
||||
Message-Id: <1314283194-26086-3-git-send-email-jlayton@redhat.com>
|
||||
In-Reply-To: <1314283194-26086-1-git-send-email-jlayton@redhat.com>
|
||||
References: <1314283194-26086-1-git-send-email-jlayton@redhat.com>
|
||||
X-BeenThere: kernel@lists.fedoraproject.org
|
||||
X-Mailman-Version: 2.1.9
|
||||
Precedence: list
|
||||
List-Id: "Fedora kernel development." <kernel.lists.fedoraproject.org>
|
||||
List-Unsubscribe: <https://admin.fedoraproject.org/mailman/listinfo/kernel>,
|
||||
<mailto:kernel-request@lists.fedoraproject.org?subject=unsubscribe>
|
||||
List-Archive: <http://lists.fedoraproject.org/pipermail/kernel>
|
||||
List-Post: <mailto:kernel@lists.fedoraproject.org>
|
||||
List-Help: <mailto:kernel-request@lists.fedoraproject.org?subject=help>
|
||||
List-Subscribe: <https://admin.fedoraproject.org/mailman/listinfo/kernel>,
|
||||
<mailto:kernel-request@lists.fedoraproject.org?subject=subscribe>
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset="us-ascii"
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Sender: kernel-bounces@lists.fedoraproject.org
|
||||
Errors-To: kernel-bounces@lists.fedoraproject.org
|
||||
X-RedHat-Spam-Score: -0.502 (RP_MATCHES_RCVD)
|
||||
X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22
|
||||
X-Scanned-By: MIMEDefang 2.68 on 10.5.110.17
|
||||
|
||||
From: Pavel Shilovsky <piastryyy@gmail.com>
|
||||
|
||||
move it to the beginning of the loop.
|
||||
|
||||
Cc: <stable@kernel.org>
|
||||
Signed-off-by: Pavel Shilovsky <piastryyy@gmail.com>
|
||||
Reviewed-by: Jeff Layton <jlayton@redhat.com>
|
||||
---
|
||||
fs/cifs/cifsfs.c | 10 ++++++----
|
||||
1 files changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
|
||||
index fc7e57b..53e7d72 100644
|
||||
--- a/fs/cifs/cifsfs.c
|
||||
+++ b/fs/cifs/cifsfs.c
|
||||
@@ -566,6 +566,12 @@ cifs_get_root(struct smb_vol *vol, struct super_block *sb)
|
||||
struct inode *dir = dentry->d_inode;
|
||||
struct dentry *child;
|
||||
|
||||
+ if (!dir) {
|
||||
+ dput(dentry);
|
||||
+ dentry = ERR_PTR(-ENOENT);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
/* skip separators */
|
||||
while (*s == sep)
|
||||
s++;
|
||||
@@ -581,10 +587,6 @@ cifs_get_root(struct smb_vol *vol, struct super_block *sb)
|
||||
mutex_unlock(&dir->i_mutex);
|
||||
dput(dentry);
|
||||
dentry = child;
|
||||
- if (!dentry->d_inode) {
|
||||
- dput(dentry);
|
||||
- dentry = ERR_PTR(-ENOENT);
|
||||
- }
|
||||
} while (!IS_ERR(dentry));
|
||||
_FreeXid(xid);
|
||||
kfree(full_path);
|
||||
--
|
||||
1.7.6
|
||||
|
||||
_______________________________________________
|
||||
kernel mailing list
|
||||
kernel@lists.fedoraproject.org
|
||||
https://admin.fedoraproject.org/mailman/listinfo/kernel
|
|
@ -1,148 +0,0 @@
|
|||
Path: news.gmane.org!not-for-mail
|
||||
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
||||
Newsgroups: gmane.linux.kernel
|
||||
Subject: Re: Linux 3.1-rc9
|
||||
Date: Tue, 18 Oct 2011 11:05:13 +0200
|
||||
Lines: 84
|
||||
Approved: news@gmane.org
|
||||
Message-ID: <1318928713.21167.4.camel@twins>
|
||||
References: <CA+55aFxPNszU5UHFrDDYnshLEMupaviFwhgEsgmPkqpmuWNZ8A@mail.gmail.com>
|
||||
<20111007070842.GA27555@hostway.ca> <20111007174848.GA11011@hostway.ca>
|
||||
<1318010515.398.8.camel@twins> <20111008005035.GC22843@hostway.ca>
|
||||
<1318060551.8395.0.camel@twins> <20111012213555.GC24461@hostway.ca>
|
||||
<20111013232521.GA5654@hostway.ca>
|
||||
<CA+55aFxxfsFMgqA7kYKukvkCX6Z9HrKOtP-22w5Mc21iQj4c=Q@mail.gmail.com>
|
||||
<1318847658.6594.40.camel@twins>
|
||||
<CA+55aFxaGKEyhXdHXNxvPrPQ-SGSpbXdfoeXrxfjPx3VXsgvtg@mail.gmail.com>
|
||||
<1318874090.4172.84.camel@twins>
|
||||
<CA+55aFwCBy=4YK6amE=H-BYu9-boj4Po2Zkgf4V261mCx0DC4A@mail.gmail.com>
|
||||
<1318879396.4172.92.camel@twins> <alpine.LFD.2.02.1110172237030.3240@ionos>
|
||||
<alpine.LFD.2.02.1110181037120.3240@ionos>
|
||||
NNTP-Posting-Host: lo.gmane.org
|
||||
Mime-Version: 1.0
|
||||
Content-Type: text/plain; charset="UTF-8"
|
||||
Content-Transfer-Encoding: 8BIT
|
||||
X-Trace: dough.gmane.org 1318928749 2484 80.91.229.12 (18 Oct 2011 09:05:49 GMT)
|
||||
X-Complaints-To: usenet@dough.gmane.org
|
||||
NNTP-Posting-Date: Tue, 18 Oct 2011 09:05:49 +0000 (UTC)
|
||||
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
|
||||
Simon Kirby <sim@hostway.ca>,
|
||||
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
|
||||
Dave Jones <davej@redhat.com>,
|
||||
Martin Schwidefsky <schwidefsky@de.ibm.com>,
|
||||
Ingo Molnar <mingo@elte.hu>
|
||||
To: Thomas Gleixner <tglx@linutronix.de>
|
||||
Original-X-From: linux-kernel-owner@vger.kernel.org Tue Oct 18 11:05:43 2011
|
||||
Return-path: <linux-kernel-owner@vger.kernel.org>
|
||||
Envelope-to: glk-linux-kernel-3@lo.gmane.org
|
||||
Original-Received: from vger.kernel.org ([209.132.180.67])
|
||||
by lo.gmane.org with esmtp (Exim 4.69)
|
||||
(envelope-from <linux-kernel-owner@vger.kernel.org>)
|
||||
id 1RG5cB-0003K9-2n
|
||||
for glk-linux-kernel-3@lo.gmane.org; Tue, 18 Oct 2011 11:05:39 +0200
|
||||
Original-Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
|
||||
id S1757183Ab1JRJFc (ORCPT <rfc822;glk-linux-kernel-3@m.gmane.org>);
|
||||
Tue, 18 Oct 2011 05:05:32 -0400
|
||||
Original-Received: from casper.infradead.org ([85.118.1.10]:40399 "EHLO
|
||||
casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
|
||||
with ESMTP id S1753880Ab1JRJFa convert rfc822-to-8bit (ORCPT
|
||||
<rfc822;linux-kernel@vger.kernel.org>);
|
||||
Tue, 18 Oct 2011 05:05:30 -0400
|
||||
Original-Received: from j77219.upc-j.chello.nl ([24.132.77.219] helo=twins)
|
||||
by casper.infradead.org with esmtpsa (Exim 4.76 #1 (Red Hat Linux))
|
||||
id 1RG5bu-0008Qu-O5; Tue, 18 Oct 2011 09:05:22 +0000
|
||||
Original-Received: by twins (Postfix, from userid 1000)
|
||||
id 69952813C82C; Tue, 18 Oct 2011 11:05:13 +0200 (CEST)
|
||||
In-Reply-To: <alpine.LFD.2.02.1110181037120.3240@ionos>
|
||||
X-Mailer: Evolution 3.0.3-
|
||||
Original-Sender: linux-kernel-owner@vger.kernel.org
|
||||
Precedence: bulk
|
||||
List-ID: <linux-kernel.vger.kernel.org>
|
||||
X-Mailing-List: linux-kernel@vger.kernel.org
|
||||
Xref: news.gmane.org gmane.linux.kernel:1204676
|
||||
Archived-At: <http://permalink.gmane.org/gmane.linux.kernel/1204676>
|
||||
|
||||
On Tue, 2011-10-18 at 10:39 +0200, Thomas Gleixner wrote:
|
||||
> On Mon, 17 Oct 2011, Thomas Gleixner wrote:
|
||||
> > That said, I really need some sleep before I can make a final
|
||||
> > judgement on that horror. The call paths are such an intermingled mess
|
||||
> > that it's not funny anymore. I do that tomorrow morning first thing.
|
||||
>
|
||||
> The patch is safe and the exit race just existed in my confused tired
|
||||
> brain. Peter, can you please provide a changelog. That wants a cc
|
||||
> stable as well, because that deadlock causing commit hit 3.0.7 :(
|
||||
|
||||
---
|
||||
Subject: cputimer: Cure lock inversion
|
||||
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
||||
Date: Mon Oct 17 11:50:30 CEST 2011
|
||||
|
||||
There's a lock inversion between the cputimer->lock and rq->lock; notably
|
||||
the two callchains involved are:
|
||||
|
||||
update_rlimit_cpu()
|
||||
sighand->siglock
|
||||
set_process_cpu_timer()
|
||||
cpu_timer_sample_group()
|
||||
thread_group_cputimer()
|
||||
cputimer->lock
|
||||
thread_group_cputime()
|
||||
task_sched_runtime()
|
||||
->pi_lock
|
||||
rq->lock
|
||||
|
||||
scheduler_tick()
|
||||
rq->lock
|
||||
task_tick_fair()
|
||||
update_curr()
|
||||
account_group_exec()
|
||||
cputimer->lock
|
||||
|
||||
Where the first one is enabling a CLOCK_PROCESS_CPUTIME_ID timer, and
|
||||
the second one is keeping up-to-date.
|
||||
|
||||
This problem was introduced by e8abccb7193 ("posix-cpu-timers: Cure
|
||||
SMP accounting oddities").
|
||||
|
||||
Cure the problem by removing the cputimer->lock and rq->lock nesting,
|
||||
this leaves concurrent enablers doing duplicate work, but the time
|
||||
wasted should be on the same order otherwise wasted spinning on the
|
||||
lock and the greater-than assignment filter should ensure we preserve
|
||||
monotonicity.
|
||||
|
||||
Reported-by: Dave Jones <davej@redhat.com>
|
||||
Reported-by: Simon Kirby <sim@hostway.ca>
|
||||
Cc: stable@kernel.org
|
||||
Cc: Thomas Gleixner <tglx@linutronix.de>
|
||||
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
||||
---
|
||||
kernel/posix-cpu-timers.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
Index: linux-2.6/kernel/posix-cpu-timers.c
|
||||
===================================================================
|
||||
--- linux-2.6.orig/kernel/posix-cpu-timers.c
|
||||
+++ linux-2.6/kernel/posix-cpu-timers.c
|
||||
@@ -274,9 +274,7 @@ void thread_group_cputimer(struct task_s
|
||||
struct task_cputime sum;
|
||||
unsigned long flags;
|
||||
|
||||
- spin_lock_irqsave(&cputimer->lock, flags);
|
||||
if (!cputimer->running) {
|
||||
- cputimer->running = 1;
|
||||
/*
|
||||
* The POSIX timer interface allows for absolute time expiry
|
||||
* values through the TIMER_ABSTIME flag, therefore we have
|
||||
@@ -284,8 +282,11 @@ void thread_group_cputimer(struct task_s
|
||||
* it.
|
||||
*/
|
||||
thread_group_cputime(tsk, &sum);
|
||||
+ spin_lock_irqsave(&cputimer->lock, flags);
|
||||
+ cputimer->running = 1;
|
||||
update_gt_cputime(&cputimer->cputime, &sum);
|
||||
- }
|
||||
+ } else
|
||||
+ spin_lock_irqsave(&cputimer->lock, flags);
|
||||
*times = cputimer->cputime;
|
||||
spin_unlock_irqrestore(&cputimer->lock, flags);
|
||||
}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
|
||||
index 2e618b5..9095b5b 100644
|
||||
--- a/drivers/gpu/drm/ttm/ttm_bo.c
|
||||
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
|
||||
@@ -390,10 +390,12 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo,
|
||||
* Create and bind a ttm if required.
|
||||
*/
|
||||
|
||||
- if (!(new_man->flags & TTM_MEMTYPE_FLAG_FIXED) && (bo->ttm == NULL)) {
|
||||
- ret = ttm_bo_add_ttm(bo, false);
|
||||
- if (ret)
|
||||
- goto out_err;
|
||||
+ if (!(new_man->flags & TTM_MEMTYPE_FLAG_FIXED)) {
|
||||
+ if (bo->ttm == NULL) {
|
||||
+ ret = ttm_bo_add_ttm(bo, false);
|
||||
+ if (ret)
|
||||
+ goto out_err;
|
||||
+ }
|
||||
|
||||
ret = ttm_tt_set_placement_caching(bo->ttm, mem->placement);
|
||||
if (ret)
|
||||
diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
|
||||
index 77dbf40..ae3c6f5 100644
|
||||
--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
|
||||
+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
|
||||
@@ -635,13 +635,13 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
- ttm_bo_free_old_node(bo);
|
||||
if ((man->flags & TTM_MEMTYPE_FLAG_FIXED) &&
|
||||
(bo->ttm != NULL)) {
|
||||
ttm_tt_unbind(bo->ttm);
|
||||
ttm_tt_destroy(bo->ttm);
|
||||
bo->ttm = NULL;
|
||||
}
|
||||
+ ttm_bo_free_old_node(bo);
|
||||
} else {
|
||||
/**
|
||||
* This should help pipeline ordinary buffer moves.
|
|
@ -1,70 +0,0 @@
|
|||
From 4078129ec09990936702ab5274e05d139d7f7dcd Mon Sep 17 00:00:00 2001
|
||||
From: Miklos Szeredi <mszeredi@suse.cz>
|
||||
Date: Mon, 12 Sep 2011 09:38:03 +0200
|
||||
Subject: [PATCH] fuse: fix memory leak
|
||||
|
||||
kmemleak is reporting that 32 bytes are being leaked by FUSE:
|
||||
|
||||
unreferenced object 0xe373b270 (size 32):
|
||||
comm "fusermount", pid 1207, jiffies 4294707026 (age 2675.187s)
|
||||
hex dump (first 32 bytes):
|
||||
01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................
|
||||
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
||||
backtrace:
|
||||
[<b05517d7>] kmemleak_alloc+0x27/0x50
|
||||
[<b0196435>] kmem_cache_alloc+0xc5/0x180
|
||||
[<b02455be>] fuse_alloc_forget+0x1e/0x20
|
||||
[<b0245670>] fuse_alloc_inode+0xb0/0xd0
|
||||
[<b01b1a8c>] alloc_inode+0x1c/0x80
|
||||
[<b01b290f>] iget5_locked+0x8f/0x1a0
|
||||
[<b0246022>] fuse_iget+0x72/0x1a0
|
||||
[<b02461da>] fuse_get_root_inode+0x8a/0x90
|
||||
[<b02465cf>] fuse_fill_super+0x3ef/0x590
|
||||
[<b019e56f>] mount_nodev+0x3f/0x90
|
||||
[<b0244e95>] fuse_mount+0x15/0x20
|
||||
[<b019d1bc>] mount_fs+0x1c/0xc0
|
||||
[<b01b5811>] vfs_kern_mount+0x41/0x90
|
||||
[<b01b5af9>] do_kern_mount+0x39/0xd0
|
||||
[<b01b7585>] do_mount+0x2e5/0x660
|
||||
[<b01b7966>] sys_mount+0x66/0xa0
|
||||
|
||||
This leak report is consistent and happens once per boot on
|
||||
3.1.0-rc5-dirty.
|
||||
|
||||
This happens if a FORGET request is queued after the fuse device was
|
||||
released.
|
||||
|
||||
Reported-by: Sitsofe Wheeler <sitsofe@yahoo.com>
|
||||
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
|
||||
Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
fs/fuse/dev.c | 12 ++++++++----
|
||||
1 files changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
|
||||
index 168a80f..5cb8614 100644
|
||||
--- a/fs/fuse/dev.c
|
||||
+++ b/fs/fuse/dev.c
|
||||
@@ -258,10 +258,14 @@ void fuse_queue_forget(struct fuse_conn *fc, struct fuse_forget_link *forget,
|
||||
forget->forget_one.nlookup = nlookup;
|
||||
|
||||
spin_lock(&fc->lock);
|
||||
- fc->forget_list_tail->next = forget;
|
||||
- fc->forget_list_tail = forget;
|
||||
- wake_up(&fc->waitq);
|
||||
- kill_fasync(&fc->fasync, SIGIO, POLL_IN);
|
||||
+ if (fc->connected) {
|
||||
+ fc->forget_list_tail->next = forget;
|
||||
+ fc->forget_list_tail = forget;
|
||||
+ wake_up(&fc->waitq);
|
||||
+ kill_fasync(&fc->fasync, SIGIO, POLL_IN);
|
||||
+ } else {
|
||||
+ kfree(forget);
|
||||
+ }
|
||||
spin_unlock(&fc->lock);
|
||||
}
|
||||
|
||||
--
|
||||
1.7.6.4
|
||||
|
|
@ -1,315 +0,0 @@
|
|||
From 6596528e391ad978a6a120142cba97a1d7324cb6 Mon Sep 17 00:00:00 2001
|
||||
From: Seth Forshee <seth.forshee@canonical.com>
|
||||
Date: Mon, 18 Jul 2011 08:06:23 -0700
|
||||
Subject: [PATCH] hfsplus: ensure bio requests are not smaller than the
|
||||
hardware sectors
|
||||
|
||||
Currently all bio requests are 512 bytes, which may fail for media
|
||||
whose physical sector size is larger than this. Ensure these
|
||||
requests are not smaller than the block device logical block size.
|
||||
|
||||
BugLink: http://bugs.launchpad.net/bugs/734883
|
||||
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
|
||||
Signed-off-by: Christoph Hellwig <hch@lst.de>
|
||||
---
|
||||
fs/hfsplus/hfsplus_fs.h | 16 ++++++++-
|
||||
fs/hfsplus/part_tbl.c | 32 ++++++++++--------
|
||||
fs/hfsplus/super.c | 12 +++---
|
||||
fs/hfsplus/wrapper.c | 83 +++++++++++++++++++++++++++++++++++-----------
|
||||
4 files changed, 101 insertions(+), 42 deletions(-)
|
||||
|
||||
diff --git a/fs/hfsplus/hfsplus_fs.h b/fs/hfsplus/hfsplus_fs.h
|
||||
index 0bebf74..81dfd1e 100644
|
||||
--- a/fs/hfsplus/hfsplus_fs.h
|
||||
+++ b/fs/hfsplus/hfsplus_fs.h
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <linux/fs.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/buffer_head.h>
|
||||
+#include <linux/blkdev.h>
|
||||
#include "hfsplus_raw.h"
|
||||
|
||||
#define DBG_BNODE_REFS 0x00000001
|
||||
@@ -110,7 +111,9 @@ struct hfsplus_vh;
|
||||
struct hfs_btree;
|
||||
|
||||
struct hfsplus_sb_info {
|
||||
+ void *s_vhdr_buf;
|
||||
struct hfsplus_vh *s_vhdr;
|
||||
+ void *s_backup_vhdr_buf;
|
||||
struct hfsplus_vh *s_backup_vhdr;
|
||||
struct hfs_btree *ext_tree;
|
||||
struct hfs_btree *cat_tree;
|
||||
@@ -258,6 +261,15 @@ struct hfsplus_readdir_data {
|
||||
struct hfsplus_cat_key key;
|
||||
};
|
||||
|
||||
+/*
|
||||
+ * Find minimum acceptible I/O size for an hfsplus sb.
|
||||
+ */
|
||||
+static inline unsigned short hfsplus_min_io_size(struct super_block *sb)
|
||||
+{
|
||||
+ return max_t(unsigned short, bdev_logical_block_size(sb->s_bdev),
|
||||
+ HFSPLUS_SECTOR_SIZE);
|
||||
+}
|
||||
+
|
||||
#define hfs_btree_open hfsplus_btree_open
|
||||
#define hfs_btree_close hfsplus_btree_close
|
||||
#define hfs_btree_write hfsplus_btree_write
|
||||
@@ -436,8 +448,8 @@ int hfsplus_compare_dentry(const struct dentry *parent,
|
||||
/* wrapper.c */
|
||||
int hfsplus_read_wrapper(struct super_block *);
|
||||
int hfs_part_find(struct super_block *, sector_t *, sector_t *);
|
||||
-int hfsplus_submit_bio(struct block_device *bdev, sector_t sector,
|
||||
- void *data, int rw);
|
||||
+int hfsplus_submit_bio(struct super_block *sb, sector_t sector,
|
||||
+ void *buf, void **data, int rw);
|
||||
|
||||
/* time macros */
|
||||
#define __hfsp_mt2ut(t) (be32_to_cpu(t) - 2082844800U)
|
||||
diff --git a/fs/hfsplus/part_tbl.c b/fs/hfsplus/part_tbl.c
|
||||
index 40ad88c..eb355d8 100644
|
||||
--- a/fs/hfsplus/part_tbl.c
|
||||
+++ b/fs/hfsplus/part_tbl.c
|
||||
@@ -88,11 +88,12 @@ static int hfs_parse_old_pmap(struct super_block *sb, struct old_pmap *pm,
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
-static int hfs_parse_new_pmap(struct super_block *sb, struct new_pmap *pm,
|
||||
- sector_t *part_start, sector_t *part_size)
|
||||
+static int hfs_parse_new_pmap(struct super_block *sb, void *buf,
|
||||
+ struct new_pmap *pm, sector_t *part_start, sector_t *part_size)
|
||||
{
|
||||
struct hfsplus_sb_info *sbi = HFSPLUS_SB(sb);
|
||||
int size = be32_to_cpu(pm->pmMapBlkCnt);
|
||||
+ int buf_size = hfsplus_min_io_size(sb);
|
||||
int res;
|
||||
int i = 0;
|
||||
|
||||
@@ -107,11 +108,14 @@ static int hfs_parse_new_pmap(struct super_block *sb, struct new_pmap *pm,
|
||||
if (++i >= size)
|
||||
return -ENOENT;
|
||||
|
||||
- res = hfsplus_submit_bio(sb->s_bdev,
|
||||
- *part_start + HFS_PMAP_BLK + i,
|
||||
- pm, READ);
|
||||
- if (res)
|
||||
- return res;
|
||||
+ pm = (struct new_pmap *)((u8 *)pm + HFSPLUS_SECTOR_SIZE);
|
||||
+ if ((u8 *)pm - (u8 *)buf >= buf_size) {
|
||||
+ res = hfsplus_submit_bio(sb,
|
||||
+ *part_start + HFS_PMAP_BLK + i,
|
||||
+ buf, (void **)&pm, READ);
|
||||
+ if (res)
|
||||
+ return res;
|
||||
+ }
|
||||
} while (pm->pmSig == cpu_to_be16(HFS_NEW_PMAP_MAGIC));
|
||||
|
||||
return -ENOENT;
|
||||
@@ -124,15 +128,15 @@ static int hfs_parse_new_pmap(struct super_block *sb, struct new_pmap *pm,
|
||||
int hfs_part_find(struct super_block *sb,
|
||||
sector_t *part_start, sector_t *part_size)
|
||||
{
|
||||
- void *data;
|
||||
+ void *buf, *data;
|
||||
int res;
|
||||
|
||||
- data = kmalloc(HFSPLUS_SECTOR_SIZE, GFP_KERNEL);
|
||||
- if (!data)
|
||||
+ buf = kmalloc(hfsplus_min_io_size(sb), GFP_KERNEL);
|
||||
+ if (!buf)
|
||||
return -ENOMEM;
|
||||
|
||||
- res = hfsplus_submit_bio(sb->s_bdev, *part_start + HFS_PMAP_BLK,
|
||||
- data, READ);
|
||||
+ res = hfsplus_submit_bio(sb, *part_start + HFS_PMAP_BLK,
|
||||
+ buf, &data, READ);
|
||||
if (res)
|
||||
goto out;
|
||||
|
||||
@@ -141,13 +145,13 @@ int hfs_part_find(struct super_block *sb,
|
||||
res = hfs_parse_old_pmap(sb, data, part_start, part_size);
|
||||
break;
|
||||
case HFS_NEW_PMAP_MAGIC:
|
||||
- res = hfs_parse_new_pmap(sb, data, part_start, part_size);
|
||||
+ res = hfs_parse_new_pmap(sb, buf, data, part_start, part_size);
|
||||
break;
|
||||
default:
|
||||
res = -ENOENT;
|
||||
break;
|
||||
}
|
||||
out:
|
||||
- kfree(data);
|
||||
+ kfree(buf);
|
||||
return res;
|
||||
}
|
||||
diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c
|
||||
index 84f56e1..c106ca2 100644
|
||||
--- a/fs/hfsplus/super.c
|
||||
+++ b/fs/hfsplus/super.c
|
||||
@@ -203,17 +203,17 @@ int hfsplus_sync_fs(struct super_block *sb, int wait)
|
||||
write_backup = 1;
|
||||
}
|
||||
|
||||
- error2 = hfsplus_submit_bio(sb->s_bdev,
|
||||
+ error2 = hfsplus_submit_bio(sb,
|
||||
sbi->part_start + HFSPLUS_VOLHEAD_SECTOR,
|
||||
- sbi->s_vhdr, WRITE_SYNC);
|
||||
+ sbi->s_vhdr_buf, NULL, WRITE_SYNC);
|
||||
if (!error)
|
||||
error = error2;
|
||||
if (!write_backup)
|
||||
goto out;
|
||||
|
||||
- error2 = hfsplus_submit_bio(sb->s_bdev,
|
||||
+ error2 = hfsplus_submit_bio(sb,
|
||||
sbi->part_start + sbi->sect_count - 2,
|
||||
- sbi->s_backup_vhdr, WRITE_SYNC);
|
||||
+ sbi->s_backup_vhdr_buf, NULL, WRITE_SYNC);
|
||||
if (!error)
|
||||
error2 = error;
|
||||
out:
|
||||
@@ -257,8 +257,8 @@ static void hfsplus_put_super(struct super_block *sb)
|
||||
hfs_btree_close(sbi->ext_tree);
|
||||
iput(sbi->alloc_file);
|
||||
iput(sbi->hidden_dir);
|
||||
- kfree(sbi->s_vhdr);
|
||||
- kfree(sbi->s_backup_vhdr);
|
||||
+ kfree(sbi->s_vhdr_buf);
|
||||
+ kfree(sbi->s_backup_vhdr_buf);
|
||||
unload_nls(sbi->nls);
|
||||
kfree(sb->s_fs_info);
|
||||
sb->s_fs_info = NULL;
|
||||
diff --git a/fs/hfsplus/wrapper.c b/fs/hfsplus/wrapper.c
|
||||
index 2f933e8..10e515a 100644
|
||||
--- a/fs/hfsplus/wrapper.c
|
||||
+++ b/fs/hfsplus/wrapper.c
|
||||
@@ -31,25 +31,67 @@ static void hfsplus_end_io_sync(struct bio *bio, int err)
|
||||
complete(bio->bi_private);
|
||||
}
|
||||
|
||||
-int hfsplus_submit_bio(struct block_device *bdev, sector_t sector,
|
||||
- void *data, int rw)
|
||||
+/*
|
||||
+ * hfsplus_submit_bio - Perfrom block I/O
|
||||
+ * @sb: super block of volume for I/O
|
||||
+ * @sector: block to read or write, for blocks of HFSPLUS_SECTOR_SIZE bytes
|
||||
+ * @buf: buffer for I/O
|
||||
+ * @data: output pointer for location of requested data
|
||||
+ * @rw: direction of I/O
|
||||
+ *
|
||||
+ * The unit of I/O is hfsplus_min_io_size(sb), which may be bigger than
|
||||
+ * HFSPLUS_SECTOR_SIZE, and @buf must be sized accordingly. On reads
|
||||
+ * @data will return a pointer to the start of the requested sector,
|
||||
+ * which may not be the same location as @buf.
|
||||
+ *
|
||||
+ * If @sector is not aligned to the bdev logical block size it will
|
||||
+ * be rounded down. For writes this means that @buf should contain data
|
||||
+ * that starts at the rounded-down address. As long as the data was
|
||||
+ * read using hfsplus_submit_bio() and the same buffer is used things
|
||||
+ * will work correctly.
|
||||
+ */
|
||||
+int hfsplus_submit_bio(struct super_block *sb, sector_t sector,
|
||||
+ void *buf, void **data, int rw)
|
||||
{
|
||||
DECLARE_COMPLETION_ONSTACK(wait);
|
||||
struct bio *bio;
|
||||
int ret = 0;
|
||||
+ unsigned int io_size;
|
||||
+ loff_t start;
|
||||
+ int offset;
|
||||
+
|
||||
+ /*
|
||||
+ * Align sector to hardware sector size and find offset. We
|
||||
+ * assume that io_size is a power of two, which _should_
|
||||
+ * be true.
|
||||
+ */
|
||||
+ io_size = hfsplus_min_io_size(sb);
|
||||
+ start = (loff_t)sector << HFSPLUS_SECTOR_SHIFT;
|
||||
+ offset = start & (io_size - 1);
|
||||
+ sector &= ~((io_size >> HFSPLUS_SECTOR_SHIFT) - 1);
|
||||
|
||||
bio = bio_alloc(GFP_NOIO, 1);
|
||||
bio->bi_sector = sector;
|
||||
- bio->bi_bdev = bdev;
|
||||
+ bio->bi_bdev = sb->s_bdev;
|
||||
bio->bi_end_io = hfsplus_end_io_sync;
|
||||
bio->bi_private = &wait;
|
||||
|
||||
- /*
|
||||
- * We always submit one sector at a time, so bio_add_page must not fail.
|
||||
- */
|
||||
- if (bio_add_page(bio, virt_to_page(data), HFSPLUS_SECTOR_SIZE,
|
||||
- offset_in_page(data)) != HFSPLUS_SECTOR_SIZE)
|
||||
- BUG();
|
||||
+ if (!(rw & WRITE) && data)
|
||||
+ *data = (u8 *)buf + offset;
|
||||
+
|
||||
+ while (io_size > 0) {
|
||||
+ unsigned int page_offset = offset_in_page(buf);
|
||||
+ unsigned int len = min_t(unsigned int, PAGE_SIZE - page_offset,
|
||||
+ io_size);
|
||||
+
|
||||
+ ret = bio_add_page(bio, virt_to_page(buf), len, page_offset);
|
||||
+ if (ret != len) {
|
||||
+ ret = -EIO;
|
||||
+ goto out;
|
||||
+ }
|
||||
+ io_size -= len;
|
||||
+ buf = (u8 *)buf + len;
|
||||
+ }
|
||||
|
||||
submit_bio(rw, bio);
|
||||
wait_for_completion(&wait);
|
||||
@@ -57,8 +99,9 @@ int hfsplus_submit_bio(struct block_device *bdev, sector_t sector,
|
||||
if (!bio_flagged(bio, BIO_UPTODATE))
|
||||
ret = -EIO;
|
||||
|
||||
+out:
|
||||
bio_put(bio);
|
||||
- return ret;
|
||||
+ return ret < 0 ? ret : 0;
|
||||
}
|
||||
|
||||
static int hfsplus_read_mdb(void *bufptr, struct hfsplus_wd *wd)
|
||||
@@ -143,17 +186,17 @@ int hfsplus_read_wrapper(struct super_block *sb)
|
||||
goto out;
|
||||
|
||||
error = -ENOMEM;
|
||||
- sbi->s_vhdr = kmalloc(HFSPLUS_SECTOR_SIZE, GFP_KERNEL);
|
||||
- if (!sbi->s_vhdr)
|
||||
+ sbi->s_vhdr_buf = kmalloc(hfsplus_min_io_size(sb), GFP_KERNEL);
|
||||
+ if (!sbi->s_vhdr_buf)
|
||||
goto out;
|
||||
- sbi->s_backup_vhdr = kmalloc(HFSPLUS_SECTOR_SIZE, GFP_KERNEL);
|
||||
- if (!sbi->s_backup_vhdr)
|
||||
+ sbi->s_backup_vhdr_buf = kmalloc(hfsplus_min_io_size(sb), GFP_KERNEL);
|
||||
+ if (!sbi->s_backup_vhdr_buf)
|
||||
goto out_free_vhdr;
|
||||
|
||||
reread:
|
||||
- error = hfsplus_submit_bio(sb->s_bdev,
|
||||
- part_start + HFSPLUS_VOLHEAD_SECTOR,
|
||||
- sbi->s_vhdr, READ);
|
||||
+ error = hfsplus_submit_bio(sb, part_start + HFSPLUS_VOLHEAD_SECTOR,
|
||||
+ sbi->s_vhdr_buf, (void **)&sbi->s_vhdr,
|
||||
+ READ);
|
||||
if (error)
|
||||
goto out_free_backup_vhdr;
|
||||
|
||||
@@ -183,9 +226,9 @@ reread:
|
||||
goto reread;
|
||||
}
|
||||
|
||||
- error = hfsplus_submit_bio(sb->s_bdev,
|
||||
- part_start + part_size - 2,
|
||||
- sbi->s_backup_vhdr, READ);
|
||||
+ error = hfsplus_submit_bio(sb, part_start + part_size - 2,
|
||||
+ sbi->s_backup_vhdr_buf,
|
||||
+ (void **)&sbi->s_backup_vhdr, READ);
|
||||
if (error)
|
||||
goto out_free_backup_vhdr;
|
||||
|
||||
--
|
||||
1.7.6
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
From 35d851df23b093ee027f827fed2213ae5e88fc7a Mon Sep 17 00:00:00 2001
|
||||
From: Jiri Kosina <jkosina@suse.cz>
|
||||
Date: Thu, 25 Aug 2011 14:21:37 +0200
|
||||
Subject: [PATCH] HID: magicmouse: ignore 'ivalid report id' while switching
|
||||
modes, v2
|
||||
|
||||
This is basically a more generic respin of 23746a6 ("HID: magicmouse: ignore
|
||||
'ivalid report id' while switching modes") which got reverted later by
|
||||
c3a492.
|
||||
|
||||
It turns out that on some configurations, this is actually still the case
|
||||
and we are not able to detect in runtime.
|
||||
|
||||
The device reponds with 'invalid report id' when feature report switching it
|
||||
into multitouch mode is sent to it.
|
||||
|
||||
This has been silently ignored before 0825411ade ("HID: bt: Wait for ACK
|
||||
on Sent Reports"), but since this commit, it propagates -EIO from the _raw
|
||||
callback .
|
||||
|
||||
So let the driver ignore -EIO as response to 0xd7,0x01 report, as that's
|
||||
how the device reacts in normal mode.
|
||||
|
||||
Sad, but following reality.
|
||||
|
||||
This fixes https://bugzilla.kernel.org/show_bug.cgi?id=35022
|
||||
|
||||
Reported-by: Chase Douglas <chase.douglas@canonical.com>
|
||||
Reported-by: Jaikumar Ganesh <jaikumarg@android.com>
|
||||
Tested-by: Chase Douglas <chase.douglas@canonical.com>
|
||||
Tested-by: Jaikumar Ganesh <jaikumarg@android.com>
|
||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
||||
---
|
||||
drivers/hid/hid-magicmouse.c | 10 +++++++++-
|
||||
1 files changed, 9 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c
|
||||
index b5bdab3..f0fbd7b 100644
|
||||
--- a/drivers/hid/hid-magicmouse.c
|
||||
+++ b/drivers/hid/hid-magicmouse.c
|
||||
@@ -537,9 +537,17 @@ static int magicmouse_probe(struct hid_device *hdev,
|
||||
}
|
||||
report->size = 6;
|
||||
|
||||
+ /*
|
||||
+ * Some devices repond with 'invalid report id' when feature
|
||||
+ * report switching it into multitouch mode is sent to it.
|
||||
+ *
|
||||
+ * This results in -EIO from the _raw low-level transport callback,
|
||||
+ * but there seems to be no other way of switching the mode.
|
||||
+ * Thus the super-ugly hacky success check below.
|
||||
+ */
|
||||
ret = hdev->hid_output_raw_report(hdev, feature, sizeof(feature),
|
||||
HID_FEATURE_REPORT);
|
||||
- if (ret != sizeof(feature)) {
|
||||
+ if (ret != -EIO && ret != sizeof(feature)) {
|
||||
hid_err(hdev, "unable to request touch data (%d)\n", ret);
|
||||
goto err_stop_hw;
|
||||
}
|
||||
--
|
||||
1.7.5.4
|
||||
|
39
kernel.spec
39
kernel.spec
|
@ -42,7 +42,7 @@ Summary: The Linux kernel
|
|||
# When changing real_sublevel below, reset this by hand to 1
|
||||
# (or to 0 and then use rpmdev-bumpspec).
|
||||
#
|
||||
%global baserelease 3
|
||||
%global baserelease 0
|
||||
%global fedora_build %{baserelease}
|
||||
|
||||
# real_sublevel is the 3.x kernel version we're starting with
|
||||
|
@ -51,7 +51,7 @@ Summary: The Linux kernel
|
|||
%define fake_sublevel %(echo $((40 + %{real_sublevel})))
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 7
|
||||
%define stable_update 8
|
||||
# Is it a -stable RC?
|
||||
%define stable_rc 0
|
||||
# Set rpm version accordingly
|
||||
|
@ -615,7 +615,6 @@ Patch1500: fix_xen_guest_on_old_EC2.patch
|
|||
|
||||
# nouveau + drm fixes
|
||||
Patch1810: drm-nouveau-updates.patch
|
||||
Patch1811: drm-ttm-nouveau-oops-fix.patch
|
||||
# intel drm is all merged upstream
|
||||
Patch1824: drm-intel-next.patch
|
||||
# make sure the lvds comes back on lid open
|
||||
|
@ -656,7 +655,6 @@ Patch12016: disable-i8042-check-on-apple-mac.patch
|
|||
Patch12023: ums-realtek-driver-uses-stack-memory-for-DMA.patch
|
||||
Patch12024: usb-add-quirk-for-logitech-webcams.patch
|
||||
Patch12025: crypto-register-cryptd-first.patch
|
||||
Patch12026: cputimer-Cure-lock-inversion.patch
|
||||
Patch12027: x86-efi-Calling-__pa-with-an-ioremap-address-is-invalid.patch
|
||||
Patch12028: x86-p4-make-watchdog-and-perf-work-together.patch
|
||||
|
||||
|
@ -667,7 +665,6 @@ Patch12204: linux-2.6-enable-more-pci-autosuspend.patch
|
|||
Patch12303: dmar-disable-when-ricoh-multifunction.patch
|
||||
|
||||
Patch13001: epoll-fix-spurious-lockdep-warnings.patch
|
||||
Patch13002: hfsplus-ensure-bio-requests-are-not-smaller-than-the.patch
|
||||
|
||||
Patch13010: iwlagn-check-for-priv--txq-in-iwlagn_wait_tx_queue_empty.patch
|
||||
|
||||
|
@ -688,18 +685,9 @@ Patch21003: TEGRA-2.6.40.2-enable-USB-ports.patch
|
|||
# rhbz#719607
|
||||
Patch21004: vfs-fix-automount-for-negative-autofs-dentries.patch
|
||||
|
||||
# rhbz#727927 rhbz#731278 rhbz#732934
|
||||
Patch21005: cifs-fix-ERR_PTR-dereference-in-cifs_get_root.patch
|
||||
|
||||
# rhbz #735437
|
||||
Patch21007: ucvideo-fix-crash-when-linking-entities.patch
|
||||
|
||||
# rhbz #740645
|
||||
Patch21011: md-dont-delay-reboot-by-1-second-if-no-MD-devices.patch
|
||||
|
||||
# rhbz #714381
|
||||
Patch21012: hid-magicmouse-ignore-ivalid-report-id-while-switching-modes-v2.patch
|
||||
|
||||
# rhbz #496975
|
||||
Patch21013: Platform-fix-samsung-laptop-DMI-identification-for-N.patch
|
||||
|
||||
|
@ -713,9 +701,6 @@ Patch21017: binfmt_elf-fix-PIE-execution-with-random-disabled.patch
|
|||
#rhbz #722509
|
||||
Patch21018: mmc-Always-check-for-lower-base-frequency-quirk-for-.patch
|
||||
|
||||
#rhbz #745241
|
||||
Patch21019: fuse-fix-memory-leak.patch
|
||||
|
||||
#rhbz #735946
|
||||
Patch21020: 0001-mm-vmscan-Limit-direct-reclaim-for-higher-order-allo.patch
|
||||
Patch21021: 0002-mm-Abort-reclaim-compaction-if-compaction-can-procee.patch
|
||||
|
@ -1221,7 +1206,6 @@ ApplyPatch linux-2.6-e1000-ich9-montevina.patch
|
|||
ApplyPatch fix_xen_guest_on_old_EC2.patch
|
||||
|
||||
# DRM core
|
||||
ApplyPatch drm-ttm-nouveau-oops-fix.patch
|
||||
|
||||
# Nouveau DRM
|
||||
ApplyOptionalPatch drm-nouveau-updates.patch
|
||||
|
@ -1261,7 +1245,6 @@ ApplyPatch add-appleir-usb-driver.patch
|
|||
ApplyPatch ums-realtek-driver-uses-stack-memory-for-DMA.patch
|
||||
ApplyPatch usb-add-quirk-for-logitech-webcams.patch
|
||||
ApplyPatch crypto-register-cryptd-first.patch
|
||||
ApplyPatch cputimer-Cure-lock-inversion.patch
|
||||
ApplyPatch x86-efi-Calling-__pa-with-an-ioremap-address-is-invalid.patch
|
||||
ApplyPatch x86-p4-make-watchdog-and-perf-work-together.patch
|
||||
|
||||
|
@ -1270,8 +1253,6 @@ ApplyPatch dmar-disable-when-ricoh-multifunction.patch
|
|||
|
||||
ApplyPatch epoll-fix-spurious-lockdep-warnings.patch
|
||||
|
||||
ApplyPatch hfsplus-ensure-bio-requests-are-not-smaller-than-the.patch
|
||||
|
||||
ApplyPatch iwlagn-check-for-priv--txq-in-iwlagn_wait_tx_queue_empty.patch
|
||||
|
||||
ApplyPatch utrace.patch
|
||||
|
@ -1279,19 +1260,9 @@ ApplyPatch utrace.patch
|
|||
# rhbz#719607
|
||||
ApplyPatch vfs-fix-automount-for-negative-autofs-dentries.patch
|
||||
|
||||
# rhbz#727927 rhbz#731278 rhbz#732934
|
||||
# cifs-possible-memory-corruption-on-mount.patch is already queued for 3.0.4
|
||||
ApplyPatch cifs-fix-ERR_PTR-dereference-in-cifs_get_root.patch
|
||||
|
||||
#rhbz 735437
|
||||
ApplyPatch ucvideo-fix-crash-when-linking-entities.patch
|
||||
|
||||
#rhbz 740645
|
||||
ApplyPatch md-dont-delay-reboot-by-1-second-if-no-MD-devices.patch
|
||||
|
||||
# rhbz #714381
|
||||
ApplyPatch hid-magicmouse-ignore-ivalid-report-id-while-switching-modes-v2.patch
|
||||
|
||||
# rhbz #496675
|
||||
ApplyPatch Platform-fix-samsung-laptop-DMI-identification-for-N.patch
|
||||
|
||||
|
@ -1305,9 +1276,6 @@ ApplyPatch binfmt_elf-fix-PIE-execution-with-random-disabled.patch
|
|||
#rhbz #722509
|
||||
ApplyPatch mmc-Always-check-for-lower-base-frequency-quirk-for-.patch
|
||||
|
||||
#rhbz #745241
|
||||
ApplyPatch fuse-fix-memory-leak.patch
|
||||
|
||||
#rhbz #735946
|
||||
ApplyPatch 0001-mm-vmscan-Limit-direct-reclaim-for-higher-order-allo.patch
|
||||
ApplyPatch 0002-mm-Abort-reclaim-compaction-if-compaction-can-procee.patch
|
||||
|
@ -1935,6 +1903,9 @@ fi
|
|||
# and build.
|
||||
|
||||
%changelog
|
||||
* Tue Oct 25 2011 Josh Boyer <jwboyer@redhat.com>
|
||||
- Linux 3.0.8 stable release
|
||||
|
||||
* Mon Oct 24 2011 Chuck Ebbert <cebbert@redhat.com>
|
||||
- Add patch from LKML to fix Samsung notebook brightness flicker (rhbz 737108)
|
||||
|
||||
|
|
2
sources
2
sources
|
@ -1,2 +1,2 @@
|
|||
398e95866794def22b12dfbc15ce89c0 linux-3.0.tar.bz2
|
||||
34c883ae9b6f112029879c8672b590ad patch-3.0.7.bz2
|
||||
49618d8c7a71549c8870eb709c7d3f81 patch-3.0.8.bz2
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
The uvc_mc_register_entity() function wrongfully selects the
|
||||
media_entity associated with a UVC entity when creating links. This
|
||||
results in access to uninitialized media_entity structures and can hit a
|
||||
BUG_ON statement in media_entity_create_link(). Fix it.
|
||||
|
||||
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
---
|
||||
drivers/media/video/uvc/uvc_entity.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
This patch should fix a v3.0 regression that results in a kernel crash as
|
||||
reported in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=637740 and
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=735437.
|
||||
|
||||
Test results will be welcome.
|
||||
|
||||
diff --git a/drivers/media/video/uvc/uvc_entity.c b/drivers/media/video/uvc/uvc_entity.c
|
||||
index 48fea37..29e2399 100644
|
||||
--- a/drivers/media/video/uvc/uvc_entity.c
|
||||
+++ b/drivers/media/video/uvc/uvc_entity.c
|
||||
@@ -49,7 +49,7 @@ static int uvc_mc_register_entity(struct uvc_video_chain *chain,
|
||||
if (remote == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
- source = (UVC_ENTITY_TYPE(remote) != UVC_TT_STREAMING)
|
||||
+ source = (UVC_ENTITY_TYPE(remote) == UVC_TT_STREAMING)
|
||||
? (remote->vdev ? &remote->vdev->entity : NULL)
|
||||
: &remote->subdev.entity;
|
||||
if (source == NULL)
|
||||
--
|
||||
Regards,
|
||||
|
||||
Laurent Pinchart
|
||||
|
Loading…
Reference in New Issue