[Xenomai-git] Jan Kiszka : cobalt/posix: Add support for return long values from syscalls

2015-03-24 Thread git repository hosting
Module: xenomai-3
Branch: master
Commit: fd14a3a3443aa4d71a5c0937e11020875a4246c4
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=fd14a3a3443aa4d71a5c0937e11020875a4246c4

Author: Jan Kiszka jan.kis...@siemens.com
Date:   Thu Feb 12 18:29:12 2015 +0100

cobalt/posix: Add support for return long values from syscalls

So far, handle_head/root_syscall limited to width of return values to
int, thus 32-bit. This was waiting to break, and it did over the rework
of the mayday syscall which now passed a pointer back. But also I/O
syscalls were vulnerable on 64-bit platforms, at least in principle.

Signed-off-by: Jan Kiszka jan.kis...@siemens.com

---

 kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h  |2 +-
 kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h |2 +-
 kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h|2 +-
 kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h  |2 +-
 kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h   |2 +-
 kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h  |2 +-
 kernel/cobalt/posix/syscall.c |6 --
 7 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h
index fec3c59..d80df77 100644
--- a/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h
@@ -57,7 +57,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h
index e0fc958..12760a1 100644
--- a/kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h
@@ -39,7 +39,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h
index e226ddc..c329dc3 100644
--- a/kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h
@@ -42,7 +42,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h
index 5cfe49c..a0e6103 100644
--- a/kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h
@@ -48,7 +48,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h
index 74809e0..b84fb24 100644
--- a/kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h
@@ -39,7 +39,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h
index b9eea7a..018e348 100644
--- a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h
@@ -54,7 +54,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/posix/syscall.c b/kernel/cobalt/posix/syscall.c
index 416e18f..9ad65e3 100644
--- a/kernel/cobalt/posix/syscall.c
+++ b/kernel/cobalt/posix/syscall.c
@@ -710,12 +710,13 @@ static const int cobalt_sysmodes[] = {
 static int handle_head_syscall(struct ipipe_domain *ipd, struct pt_regs *regs)
 {
struct 

[Xenomai-git] Jan Kiszka : cobalt/posix: Add support for return long values from syscalls

2015-02-13 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: fd14a3a3443aa4d71a5c0937e11020875a4246c4
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=fd14a3a3443aa4d71a5c0937e11020875a4246c4

Author: Jan Kiszka jan.kis...@siemens.com
Date:   Thu Feb 12 18:29:12 2015 +0100

cobalt/posix: Add support for return long values from syscalls

So far, handle_head/root_syscall limited to width of return values to
int, thus 32-bit. This was waiting to break, and it did over the rework
of the mayday syscall which now passed a pointer back. But also I/O
syscalls were vulnerable on 64-bit platforms, at least in principle.

Signed-off-by: Jan Kiszka jan.kis...@siemens.com

---

 kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h  |2 +-
 kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h |2 +-
 kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h|2 +-
 kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h  |2 +-
 kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h   |2 +-
 kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h  |2 +-
 kernel/cobalt/posix/syscall.c |6 --
 7 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h
index fec3c59..d80df77 100644
--- a/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h
@@ -57,7 +57,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h
index e0fc958..12760a1 100644
--- a/kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h
@@ -39,7 +39,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h
index e226ddc..c329dc3 100644
--- a/kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h
@@ -42,7 +42,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h
index 5cfe49c..a0e6103 100644
--- a/kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h
@@ -48,7 +48,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h
index 74809e0..b84fb24 100644
--- a/kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h
@@ -39,7 +39,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h
index b9eea7a..018e348 100644
--- a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h
@@ -54,7 +54,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/posix/syscall.c b/kernel/cobalt/posix/syscall.c
index 416e18f..9ad65e3 100644
--- a/kernel/cobalt/posix/syscall.c
+++ b/kernel/cobalt/posix/syscall.c
@@ -710,12 +710,13 @@ static const int cobalt_sysmodes[] = {
 static int handle_head_syscall(struct ipipe_domain *ipd, struct pt_regs *regs)
 {
struct 

[Xenomai-git] Jan Kiszka : cobalt/posix: Add support for return long values from syscalls

2015-02-12 Thread git repository hosting
Module: xenomai-jki
Branch: for-forge
Commit: cff234b456113c1b76e5848dcb448573fbcfd26c
URL:
http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=cff234b456113c1b76e5848dcb448573fbcfd26c

Author: Jan Kiszka jan.kis...@siemens.com
Date:   Thu Feb 12 18:29:12 2015 +0100

cobalt/posix: Add support for return long values from syscalls

So far, handle_head/root_syscall limited to width of return values to
int, thus 32-bit. This was waiting to break, and it did over the rework
of the mayday syscall which now passed a pointer back. But also I/O
syscalls were vulnerable on 64-bit platforms, at least in principle.

Signed-off-by: Jan Kiszka jan.kis...@siemens.com

---

 kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h  |2 +-
 kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h |2 +-
 kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h|2 +-
 kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h  |2 +-
 kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h   |2 +-
 kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h  |2 +-
 kernel/cobalt/posix/syscall.c |6 --
 7 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h
index fec3c59..d80df77 100644
--- a/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/arm/include/asm/xenomai/syscall.h
@@ -57,7 +57,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h
index e0fc958..12760a1 100644
--- a/kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/blackfin/include/asm/xenomai/syscall.h
@@ -39,7 +39,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h
index e226ddc..c329dc3 100644
--- a/kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/nios2/include/asm/xenomai/syscall.h
@@ -42,7 +42,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h
index 5cfe49c..a0e6103 100644
--- a/kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/powerpc/include/asm/xenomai/syscall.h
@@ -48,7 +48,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h
index 74809e0..b84fb24 100644
--- a/kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/sh/include/asm/xenomai/syscall.h
@@ -39,7 +39,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h 
b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h
index b9eea7a..018e348 100644
--- a/kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h
+++ b/kernel/cobalt/arch/x86/include/asm/xenomai/syscall.h
@@ -54,7 +54,7 @@ static inline void __xn_error_return(struct pt_regs *regs, 
int v)
__xn_reg_rval(regs) = v;
 }
 
-static inline void __xn_status_return(struct pt_regs *regs, int v)
+static inline void __xn_status_return(struct pt_regs *regs, long v)
 {
__xn_reg_rval(regs) = v;
 }
diff --git a/kernel/cobalt/posix/syscall.c b/kernel/cobalt/posix/syscall.c
index 416e18f..9ad65e3 100644
--- a/kernel/cobalt/posix/syscall.c
+++ b/kernel/cobalt/posix/syscall.c
@@ -710,12 +710,13 @@ static const int cobalt_sysmodes[] = {
 static int handle_head_syscall(struct ipipe_domain *ipd, struct pt_regs *regs)
 {