core/linux-armv5 to 4.0.4-2

This commit is contained in:
Kevin Mihelich 2015-05-23 00:23:58 +00:00
parent df62b94f95
commit 289f6178e7
2 changed files with 55 additions and 3 deletions

View file

@ -0,0 +1,50 @@
From bbfb0c2a33848ed6aa2eeedef96ae3a5a153456c Mon Sep 17 00:00:00 2001
From: Eric Work <work.eric@gmail.com>
Date: Mon, 18 May 2015 23:26:23 -0700
Subject: [PATCH] md/raid0: fix restore to sector variable in
raid0_make_request
The variable "sector" in "raid0_make_request()" was improperly updated
by a call to "sector_div()" which modifies its first argument in place.
Commit 47d68979cc968535cb87f3e5f2e6a3533ea48fbd restored this variable
after the call for later re-use. Unfortunetly the restore was done after
the referenced variable "bio" was advanced. This lead to the original
value and the restored value being different. Here we move this line to
the proper place.
One observed side effect of this bug was discarding a file though
unlinking would cause an unrelated file's contents to be discarded.
Signed-off-by: NeilBrown <neilb@suse.de>
Fixes: 47d68979cc96 ("md/raid0: fix bug with chunksize not a power of 2.")
Cc: stable@vger.kernel.org (any that received above backport)
URL: https://bugzilla.kernel.org/show_bug.cgi?id=98501
---
drivers/md/raid0.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
index 3b5d7f7..903391c 100644
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -517,6 +517,9 @@ static void raid0_make_request(struct mddev *mddev, struct bio *bio)
? (sector & (chunk_sects-1))
: sector_div(sector, chunk_sects));
+ /* Restore due to sector_div */
+ sector = bio->bi_iter.bi_sector;
+
if (sectors < bio_sectors(bio)) {
split = bio_split(bio, sectors, GFP_NOIO, fs_bio_set);
bio_chain(split, bio);
@@ -524,7 +527,6 @@ static void raid0_make_request(struct mddev *mddev, struct bio *bio)
split = bio;
}
- sector = bio->bi_iter.bi_sector;
zone = find_zone(mddev->private, &sector);
tmp_dev = map_sector(mddev, zone, sector, &sector);
split->bi_bdev = tmp_dev->bdev;
--
2.4.1

View file

@ -8,7 +8,7 @@ _srcname=linux-4.0
_kernelname=${pkgbase#linux}
_desc="ARMv5 multi-platform"
pkgver=4.0.4
pkgrel=1
pkgrel=2
arch=('arm')
url="http://www.kernel.org/"
license=('GPL2')
@ -22,6 +22,7 @@ source=("http://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.xz"
'0002-ARM-dts-imx23-olinuxino-enable-mxs-builtin-audio.patch'
'0003-imx23-I2C-fixes.patch'
'0004-Added-DTS-with-mxs-builtin-entries-for-testing-the-a.patch'
'0001-md-raid0-fix-restore-to-sector-variable-in-raid0_mak.patch'
'config')
md5sums=('a86916bd12798220da9eb4a1eec3616d'
'30de8c55237264deee4d4fc60eee78fd'
@ -43,6 +44,7 @@ prepare() {
git apply ../0002-ARM-dts-imx23-olinuxino-enable-mxs-builtin-audio.patch
git apply ../0003-imx23-I2C-fixes.patch
git apply ../0004-Added-DTS-with-mxs-builtin-entries-for-testing-the-a.patch
git apply ../0001-md-raid0-fix-restore-to-sector-variable-in-raid0_mak.patch
# AUFS patches
cp -ru "${srcdir}/aufs4-standalone/Documentation" .
@ -98,7 +100,7 @@ _package() {
pkgdesc="The Linux Kernel and modules - ${_desc}"
depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7')
optdepends=('crda: to set the correct wireless channels of your country')
provides=('kernel26' 'linux=${pkgver}' 'aufs_friendly')
provides=('kernel26' "linux=${pkgver}" 'aufs_friendly')
conflicts=('linux')
install=${pkgname}.install
@ -144,7 +146,7 @@ _package() {
_package-headers() {
pkgdesc="Header files and scripts for building modules for linux kernel - ${_desc}"
provides=('linux-headers=${pkgver}')
provides=("linux-headers=${pkgver}")
conflicts=('linux-headers')
install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"