Patchwork [3/3] util-linux-native: Remove SYS_setns system call in linux kernel 2.6.x

login
register
mail settings
Submitter Kang Kai
Date April 1, 2014, 9:09 a.m.
Message ID <af0d72274577463847f43551a9caf743314be414.1396343261.git.kai.kang@windriver.com>
Download mbox | patch
Permalink /patch/69805/
State New
Headers show

Comments

Kang Kai - April 1, 2014, 9:09 a.m.
From: "yanjun.zhu" <yanjun.zhu@windriver.com>

__NR_setns is not defined in linux kernel 2.6.x. To linux kernel 3.0,
this variable is defined. It has been shown that no native tools use
this syscall, so it is safe to make this substitution

Signed-off-by: yanjun.zhu <yanjun.zhu@windriver.com>
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
 meta/recipes-core/util-linux/util-linux.inc | 6 ++++++
 1 file changed, 6 insertions(+)
Richard Purdie - April 1, 2014, 10:15 a.m.
On Tue, 2014-04-01 at 17:09 +0800, Kai Kang wrote:
> From: "yanjun.zhu" <yanjun.zhu@windriver.com>
> 
> __NR_setns is not defined in linux kernel 2.6.x. To linux kernel 3.0,
> this variable is defined. It has been shown that no native tools use
> this syscall, so it is safe to make this substitution
> 
> Signed-off-by: yanjun.zhu <yanjun.zhu@windriver.com>
> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> Signed-off-by: Kai Kang <kai.kang@windriver.com>
> ---
>  meta/recipes-core/util-linux/util-linux.inc | 6 ++++++
>  1 file changed, 6 insertions(+)

This is horrible. Firstly "no native tools use this syscall" - how did
you check that? I suspect you perhaps mean "no native tools in OE-Core
at this time"? How would we know when one is added?

Secondly, this should not be done as a sed, it should be a patch with a
description. This means when we upgrade util-linux, it doesn't silently
stop working or do something unintended.

Cheers,

Richard

> diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc
> index ad7aac7..0f065b4 100644
> --- a/meta/recipes-core/util-linux/util-linux.inc
> +++ b/meta/recipes-core/util-linux/util-linux.inc
> @@ -112,6 +112,12 @@ RPROVIDES_${PN}-dev = "util-linux-libblkid-dev util-linux-libmount-dev util-linu
>  SYSTEMD_PACKAGES = "${PN}-uuidd"
>  SYSTEMD_SERVICE_${PN}-uuidd = "uuidd.service"
>  
> +do_compile_prepend_class-native() {
> +	if [ `uname -r | grep "2.6."` ]; then
> +		sed -i 's:return syscall(SYS_setns:fprintf(stderr,"Kernel does not support setns");\n\treturn 1;\n//return syscall(:g' ${S}/include/namespace.h
> +	fi
> +}
> +
>  do_compile () {
>  	set -e
>  	install ${WORKDIR}/MCONFIG ${S}/MCONFIG
> -- 
> 1.8.1.2
>

Patch

diff --git a/meta/recipes-core/util-linux/util-linux.inc b/meta/recipes-core/util-linux/util-linux.inc
index ad7aac7..0f065b4 100644
--- a/meta/recipes-core/util-linux/util-linux.inc
+++ b/meta/recipes-core/util-linux/util-linux.inc
@@ -112,6 +112,12 @@  RPROVIDES_${PN}-dev = "util-linux-libblkid-dev util-linux-libmount-dev util-linu
 SYSTEMD_PACKAGES = "${PN}-uuidd"
 SYSTEMD_SERVICE_${PN}-uuidd = "uuidd.service"
 
+do_compile_prepend_class-native() {
+	if [ `uname -r | grep "2.6."` ]; then
+		sed -i 's:return syscall(SYS_setns:fprintf(stderr,"Kernel does not support setns");\n\treturn 1;\n//return syscall(:g' ${S}/include/namespace.h
+	fi
+}
+
 do_compile () {
 	set -e
 	install ${WORKDIR}/MCONFIG ${S}/MCONFIG