diff options
Diffstat (limited to 'recipes-kernel/linux/files/Trusty-SRU-ipc-fix-compat-msgrcv-with-negative-msgtyp.patch')
-rw-r--r-- | recipes-kernel/linux/files/Trusty-SRU-ipc-fix-compat-msgrcv-with-negative-msgtyp.patch | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/recipes-kernel/linux/files/Trusty-SRU-ipc-fix-compat-msgrcv-with-negative-msgtyp.patch b/recipes-kernel/linux/files/Trusty-SRU-ipc-fix-compat-msgrcv-with-negative-msgtyp.patch new file mode 100644 index 0000000..b90a114 --- /dev/null +++ b/recipes-kernel/linux/files/Trusty-SRU-ipc-fix-compat-msgrcv-with-negative-msgtyp.patch | |||
@@ -0,0 +1,27 @@ | |||
1 | BugLink: http://bugs.launchpad.net/bugs/1393355 | ||
2 | |||
3 | Compat function takes msgtyp argument as u32 and passes it down to | ||
4 | do_msgrcv which results in casting to long, thus the sign is lost and we | ||
5 | get a big positive number instead. | ||
6 | |||
7 | Cast the argument to signed type before passing it down. | ||
8 | |||
9 | Signed-off-by: Mateusz Guzik <mguzik@redhat.com> | ||
10 | Reported-by: Gabriellla Schmidt <gsc@bruker.de> | ||
11 | |||
12 | Upstream-Status::Backport | ||
13 | Kernel 3.14 | ||
14 | |||
15 | diff --git a/ipc/compat.c b/ipc/compat.c | ||
16 | index 892f658..d3b3760 100644 | ||
17 | --- a/ipc/compat.c | ||
18 | +++ b/ipc/compat.c | ||
19 | @@ -381,7 +381,7 @@ COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second, | ||
20 | uptr = compat_ptr(ipck.msgp); | ||
21 | fifth = ipck.msgtyp; | ||
22 | } | ||
23 | - return do_msgrcv(first, uptr, second, fifth, third, | ||
24 | + return do_msgrcv(first, uptr, second, (s32)fifth, third, | ||
25 | compat_do_msg_fill); | ||
26 | } | ||
27 | case MSGGET: | ||