]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.suse/dm-mpath-check-info-before-access
Revert "Move xen patchset to new version's subdir."
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.suse / dm-mpath-check-info-before-access
diff --git a/src/patches/suse-2.6.27.31/patches.suse/dm-mpath-check-info-before-access b/src/patches/suse-2.6.27.31/patches.suse/dm-mpath-check-info-before-access
deleted file mode 100644 (file)
index 1a934bb..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-From: Hannes Reinecke <hare@suse.de>
-Subject: Kernel Oops during path failover
-References: bnc#458393
-
-I've started a new test run with 10 multipath devices and 100
-testcycles (120sec off, 120 sec on). Test failed with an "Oops":
-
-Jan 24 00:19:35 z9lp02 kernel: Oops: 0038 [#1] SMP 
-Jan 24 00:19:35 z9lp02 kernel: Modules linked in: iptable_filter ip_tables
-x_tables dm_round_robin sg sd_mod crc_t10dif zfcp scsi_transport_fc scsi_tgt
-dm_multipath scsi_dh scsi_mod fuse loop dm_mod qeth_l3 ipv6 qeth qdio ccwgroup
-chsc_sch dasd_eckd_mod dasd_mod ext3 mbcache jbd
-Jan 24 00:19:35 z9lp02 kernel: Supported: Yes
-Jan 24 00:19:35 z9lp02 kernel: CPU: 3 Not tainted 2.6.27.12-2.7-default #1
-Jan 24 00:19:35 z9lp02 kernel: Process kblockd/3 (pid: 24, task:
-000000007fad6638, ksp: 000000007fadbd38)
-Jan 24 00:19:35 z9lp02 kernel: Krnl PSW : 0404e00180000000 0000000000192216
-(mempool_free+0x2e/0xc4)
-
-It looks as if we don't check the 'info' field before accessing it; it
-might well be NULL if the bio couldn't be initialized.
-
-Signed-off-by: Hannes Reinecke <hare@suse.de>
-
-Index: linux-2.6.27-SLE11_BRANCH/drivers/md/dm.c
-===================================================================
---- linux-2.6.27-SLE11_BRANCH.orig/drivers/md/dm.c
-+++ linux-2.6.27-SLE11_BRANCH/drivers/md/dm.c
-@@ -714,13 +714,14 @@ static void free_bio_clone(struct reques
-       struct dm_rq_target_io *tio = clone->end_io_data;
-       struct mapped_device *md = tio->md;
-       struct bio *bio;
--      struct dm_clone_bio_info *info;
-       while ((bio = clone->bio) != NULL) {
-               clone->bio = bio->bi_next;
--              info = bio->bi_private;
--              free_bio_info(md, info);
-+              if (bio->bi_private) {
-+                      struct dm_clone_bio_info *info = bio->bi_private;
-+                      free_bio_info(md, info);
-+              }
-               bio->bi_private = md->bs;
-               bio_put(bio);
-@@ -1483,6 +1484,7 @@ static int dm_prep_fn(struct request_que
-       tio->orig = rq;
-       tio->error = 0;
-       memset(&tio->info, 0, sizeof(tio->info));
-+      memset(&tio->clone, 0, sizeof(tio->clone));
-       clone = &tio->clone;
-       if (setup_clone(clone, rq, tio)) {