Mon, 6 Oct 2014 00:41:24 -0500
On Fri, 19 Sep 2014 01:07:55 -0500
Corey Wright <undefined@pobox.com> wrote:
> applying patch-3.10.53-vs2.3.6.8.diff to linux 3.10.55 fails in both patching
> and testing/functionality.
linux 3.10.56 and patch-3.10.53-vs2.3.6.8.diff fails, too.
> the upstream addition of including "linux/hash.h" in "fs/namei.c" [1]
> invalidated the patch hunk context.
>
> patching file fs/namei.c
> Hunk #1 FAILED at 34.
> Hunk #2 succeeded at 267 (offset 1 line).
> Hunk #3 succeeded at 473 (offset 1 line).
> Hunk #4 succeeded at 1327 (offset 1 line).
> Hunk #5 succeeded at 1473 (offset 1 line).
> Hunk #6 succeeded at 1506 (offset 1 line).
> 1 out of 16 hunks FAILED -- saving rejects to file fs/namei.c.rej
>
> [1] https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-3.10.y&id=d4c96061fddd129778ce8b70fb093aa532f422d0
>
> the upstream change of masking all capabilities above CAP_LAST_CAP (which the
> linux-vserver patch does not adjust to account for its own CAP_CONTEXT)
> breaks changing/manipulating contexts.
>
> # vserver-info | grep V
>
> Assumed 'SYSINFO' as no other option given; try '--help' for more information.
> Versions:
> VS-API: ???
> VCI: ???
> # chcontext --xid 1 -- true
> chcontext: vc_new_s_context(): Function not implemented
>
> [2] https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-3.10.y&id=76f01555c78e496203105bd29b878db3431a2260
>
> the attached patch accounts for the change in patch hunk context. reverting
> the upstream commit accounts for the masking of CAP_CONTEXT.
instead of reverting the upstream change, the attached patch accounts for the
masking of CAP_CONTEXT. the patch also fixes the Makefile reject and
increments the vserver version (ie "2.3.6.9"; not so much due to the size of
the change, but due to technicalities).
> instructions:
> 1. acquire linux-3.10.55
> 2. apply patch-3.10.53-vs2.3.6.8
> 3. revert upstream git commit 76f0155
> a. wget -Nv --content-disposition https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/patch/?id=76f01555c78e496203105bd29b878db3431a2260
> b. patch -R <d4281c33c1086d80b2a5e3cd6081752e75795833..76f01555c78e496203105bd29b878db3431a2260.patch
> 4. apply the attached patch-3.10.53-55-vs2.3.6.8.diff
> 5. manually fix the Makefile reject (EXTRAVERSION)
1. acquire linux-3.10.56
2. apply patch-3.10.53-vs2.3.6.8
3. apply the previously attached patch-3.10.53-55-vs2.3.6.8.diff [0]
4. apply the attached patch-3.10.53-56-vs2.3.6.9.diff
[0]
http://archives.linux-vserver.org/201409/att-0005/patch-3.10.53-55-vs2.3.6.8.diff
> i've successfully built the resulting kernel and tested it in virtualbox
> against testme.sh and testfs.sh and started-entered-exited-stopped a vserver
> guest.
specific to the capabilities fix, i also tested "vserver-info | grep V" and
"chcontext --xid 1 -- true"; see above, in previous email, for failure
details.
> i figure in time herbert will release an updated kernel patch that addresses
> the upstream change in capability masking (though i have a few ideas of my
> own, but this upstream change is immaterial enough that it's easier to just
> revert it for now).
we can't revert forever, so i made the attached patch with input from herbert
and daniel (i'll take the blame and they can have the credit ;).
corey
--
undefined@pobox.com
> corey
> --
> undefined@pobox.com
upstream addition of masking all capabilities above CAP_LAST_CAP did not account for
linux-vserver CAP_CONTEXT
https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?h=linux-3.10.y&id=76f01555c78e496203105bd29b878db3431a2260
diff -urNpd linux-3.10.56-vs2.3.6.9~/include/linux/capability.h linux-3.10.56-vs2.3.6.9/include/linux/capability.h
--- linux-3.10.56-vs2.3.6.9~/include/linux/capability.h 2014-09-18 12:28:39.000000000
-0500
+++ linux-3.10.56-vs2.3.6.9/include/linux/capability.h 2014-10-05 23:00:59.000000000
-0500
@@ -79,7 +79,8 @@ extern const kernel_cap_t __cap_init_eff
#else /* HAND-CODED capability initializers */
#define CAP_LAST_U32 ((_KERNEL_CAPABILITY_U32S) - 1)
-#define CAP_LAST_U32_VALID_MASK (CAP_TO_MASK(CAP_LAST_CAP + 1) -1)
+#define CAP_LAST_U32_VALID_MASK ((CAP_TO_MASK(CAP_LAST_CAP + 1) -1) \
+ | CAP_TO_MASK(CAP_CONTEXT))
# define CAP_EMPTY_SET ((kernel_cap_t){{ 0, 0 }})
# define CAP_FULL_SET ((kernel_cap_t){{ ~0, CAP_LAST_U32_VALID_MASK }})
diff -urNpd linux-3.10.56-vs2.3.6.9~/Makefile linux-3.10.56-vs2.3.6.9/Makefile
--- linux-3.10.56-vs2.3.6.9~/Makefile 2014-10-05 23:06:23.000000000 -0500
+++ linux-3.10.56-vs2.3.6.9/Makefile 2014-10-05 22:51:58.000000000 -0500
@@ -1,7 +1,7 @@
VERSION = 3
PATCHLEVEL = 10
SUBLEVEL = 56
-EXTRAVERSION =
+EXTRAVERSION = -vs2.3.6.9
NAME = TOSSUG Baby Fish
# *DOCUMENTATION*