summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'vserver-sources/old/2.1.1_rc14-r1/4415_vs2.1.1-rc14-ml-loop-fix01.patch')
-rw-r--r--vserver-sources/old/2.1.1_rc14-r1/4415_vs2.1.1-rc14-ml-loop-fix01.patch28
1 files changed, 28 insertions, 0 deletions
diff --git a/vserver-sources/old/2.1.1_rc14-r1/4415_vs2.1.1-rc14-ml-loop-fix01.patch b/vserver-sources/old/2.1.1_rc14-r1/4415_vs2.1.1-rc14-ml-loop-fix01.patch
new file mode 100644
index 0000000..9aee0aa
--- /dev/null
+++ b/vserver-sources/old/2.1.1_rc14-r1/4415_vs2.1.1-rc14-ml-loop-fix01.patch
@@ -0,0 +1,28 @@
+Index: vserver-sources-2.1.1_2.6.16/drivers/block/loop.c
+===================================================================
+--- vserver-sources-2.1.1_2.6.16.orig/drivers/block/loop.c
++++ vserver-sources-2.1.1_2.6.16/drivers/block/loop.c
+@@ -747,6 +747,7 @@ static int loop_set_fd(struct loop_devic
+ int lo_flags = 0;
+ int error;
+ loff_t size;
++ pid_t pid;
+
+ /* This is safe, since we have a reference from open(). */
+ __module_get(THIS_MODULE);
+@@ -839,10 +840,14 @@ static int loop_set_fd(struct loop_devic
+
+ set_blocksize(bdev, lo_blocksize);
+
+- kernel_thread(loop_thread, lo, CLONE_KERNEL);
++ pid = kernel_thread(loop_thread, lo, CLONE_KERNEL);
++ if (pid < 0)
++ goto out_err;
+ wait_for_completion(&lo->lo_done);
+ return 0;
+
++ out_err:
++ error = (int)pid;
+ out_putf:
+ fput(file);
+ out: