kmod: fix O_CLOEXEC not supported on old kernel

O_CLOEXEC is introduced from Linux 2.6.23, so old kernel doesn't have
it, we need check before use.

This patch is much more like a workaround, since it may need fcntl() use
FD_CLOEXEC to replace.

(From OE-Core rev: 44c441222002ee0177100be0431adf91984e90d5)

Signed-off-by: Ting Liu <b28495@freescale.com>
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Robert Yang 2014-03-28 17:42:41 +08:00 committed by Richard Purdie
parent c48aff883a
commit ae7a07976f
2 changed files with 39 additions and 0 deletions

View File

@ -25,6 +25,7 @@ SRC_URI = "git://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git \
file://run-ptest \
file://ptest.patch \
file://avoid_parallel_tests.patch \
file://fix-O_CLOEXEC.patch \
"
S = "${WORKDIR}/git"

View File

@ -0,0 +1,38 @@
From bd43367eee868059770188fd9e9db38520dc6fff Mon Sep 17 00:00:00 2001
From: Robert Yang <liezhi.yang@windriver.com>
Date: Wed, 22 Jan 2014 01:06:40 -0500
Subject: [PATCH] libkmod/libkmod-internal.h: check whether O_CLOEXEC is
defined or not
O_CLOEXEC is introduced from Linux 2.6.23, so old kernel doesn't have
it, we need check before use.
This patch is much more like a workaround, since it may need fcntl() use
FD_CLOEXEC to replace.
This problem was reported by "Ting Liu <b28495@freescale.com>"
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Upstream-Status: Pending
---
libkmod/libkmod-internal.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/libkmod/libkmod-internal.h b/libkmod/libkmod-internal.h
index 0180124..100b40f 100644
--- a/libkmod/libkmod-internal.h
+++ b/libkmod/libkmod-internal.h
@@ -9,6 +9,10 @@
#include "macro.h"
#include "libkmod.h"
+#ifndef O_CLOEXEC
+#define O_CLOEXEC 0
+#endif
+
static _always_inline_ _printf_format_(2, 3) void
kmod_log_null(struct kmod_ctx *ctx, const char *format, ...) {}
--
1.7.10.4