From 1c1043840bc1f9d6d93381fd21c8ec4009f12b7e Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Oct 25 2011 15:31:15 +0000 Subject: Update to the Linux 3.0.8 stable release --- diff --git a/cifs-fix-ERR_PTR-dereference-in-cifs_get_root.patch b/cifs-fix-ERR_PTR-dereference-in-cifs_get_root.patch deleted file mode 100644 index f15a0e9..0000000 --- a/cifs-fix-ERR_PTR-dereference-in-cifs_get_root.patch +++ /dev/null @@ -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: -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 ; - 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 ; - Thu, 25 Aug 2011 14:40:01 +0000 (UTC) -Received: by gxk26 with SMTP id 26so2067938gxk.32 - for ; - 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 -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." -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-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 - -move it to the beginning of the loop. - -Cc: -Signed-off-by: Pavel Shilovsky -Reviewed-by: Jeff Layton ---- - 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 diff --git a/cputimer-Cure-lock-inversion.patch b/cputimer-Cure-lock-inversion.patch deleted file mode 100644 index 23759ad..0000000 --- a/cputimer-Cure-lock-inversion.patch +++ /dev/null @@ -1,148 +0,0 @@ -Path: news.gmane.org!not-for-mail -From: Peter Zijlstra -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: - <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> - - <1318847658.6594.40.camel@twins> - - <1318874090.4172.84.camel@twins> - - <1318879396.4172.92.camel@twins> - -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 , - Simon Kirby , - Linux Kernel Mailing List , - Dave Jones , - Martin Schwidefsky , - Ingo Molnar -To: Thomas Gleixner -Original-X-From: linux-kernel-owner@vger.kernel.org Tue Oct 18 11:05:43 2011 -Return-path: -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 ) - 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 ); - 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 - ); - 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: -X-Mailer: Evolution 3.0.3- -Original-Sender: linux-kernel-owner@vger.kernel.org -Precedence: bulk -List-ID: -X-Mailing-List: linux-kernel@vger.kernel.org -Xref: news.gmane.org gmane.linux.kernel:1204676 -Archived-At: - -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 -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 -Reported-by: Simon Kirby -Cc: stable@kernel.org -Cc: Thomas Gleixner -Signed-off-by: Peter Zijlstra ---- - 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); - } - diff --git a/drm-ttm-nouveau-oops-fix.patch b/drm-ttm-nouveau-oops-fix.patch deleted file mode 100644 index e65259e..0000000 --- a/drm-ttm-nouveau-oops-fix.patch +++ /dev/null @@ -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. diff --git a/fuse-fix-memory-leak.patch b/fuse-fix-memory-leak.patch deleted file mode 100644 index c52069b..0000000 --- a/fuse-fix-memory-leak.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 4078129ec09990936702ab5274e05d139d7f7dcd Mon Sep 17 00:00:00 2001 -From: Miklos Szeredi -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: - [] kmemleak_alloc+0x27/0x50 - [] kmem_cache_alloc+0xc5/0x180 - [] fuse_alloc_forget+0x1e/0x20 - [] fuse_alloc_inode+0xb0/0xd0 - [] alloc_inode+0x1c/0x80 - [] iget5_locked+0x8f/0x1a0 - [] fuse_iget+0x72/0x1a0 - [] fuse_get_root_inode+0x8a/0x90 - [] fuse_fill_super+0x3ef/0x590 - [] mount_nodev+0x3f/0x90 - [] fuse_mount+0x15/0x20 - [] mount_fs+0x1c/0xc0 - [] vfs_kern_mount+0x41/0x90 - [] do_kern_mount+0x39/0xd0 - [] do_mount+0x2e5/0x660 - [] 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 -Signed-off-by: Miklos Szeredi -Tested-by: Sitsofe Wheeler -Signed-off-by: Linus Torvalds ---- - 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 - diff --git a/hfsplus-ensure-bio-requests-are-not-smaller-than-the.patch b/hfsplus-ensure-bio-requests-are-not-smaller-than-the.patch deleted file mode 100644 index c81bf91..0000000 --- a/hfsplus-ensure-bio-requests-are-not-smaller-than-the.patch +++ /dev/null @@ -1,315 +0,0 @@ -From 6596528e391ad978a6a120142cba97a1d7324cb6 Mon Sep 17 00:00:00 2001 -From: Seth Forshee -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 -Signed-off-by: Christoph Hellwig ---- - 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 - #include - #include -+#include - #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 - diff --git a/hid-magicmouse-ignore-ivalid-report-id-while-switching-modes-v2.patch b/hid-magicmouse-ignore-ivalid-report-id-while-switching-modes-v2.patch deleted file mode 100644 index cf87d2a..0000000 --- a/hid-magicmouse-ignore-ivalid-report-id-while-switching-modes-v2.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 35d851df23b093ee027f827fed2213ae5e88fc7a Mon Sep 17 00:00:00 2001 -From: Jiri Kosina -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 -Reported-by: Jaikumar Ganesh -Tested-by: Chase Douglas -Tested-by: Jaikumar Ganesh -Signed-off-by: Jiri Kosina ---- - 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 - diff --git a/kernel.spec b/kernel.spec index 589acc3..5719e12 100644 --- a/kernel.spec +++ b/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 +- Linux 3.0.8 stable release + * Mon Oct 24 2011 Chuck Ebbert - Add patch from LKML to fix Samsung notebook brightness flicker (rhbz 737108) diff --git a/sources b/sources index 882a513..6dcaf1f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ 398e95866794def22b12dfbc15ce89c0 linux-3.0.tar.bz2 -34c883ae9b6f112029879c8672b590ad patch-3.0.7.bz2 +49618d8c7a71549c8870eb709c7d3f81 patch-3.0.8.bz2 diff --git a/ucvideo-fix-crash-when-linking-entities.patch b/ucvideo-fix-crash-when-linking-entities.patch deleted file mode 100644 index 69f86d6..0000000 --- a/ucvideo-fix-crash-when-linking-entities.patch +++ /dev/null @@ -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 ---- - 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 -