Search
SailfishOS Open Build Service
>
Projects
>
zephyr
:
devel:mw
>
qtbase
> fixlinuxfb.patch
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File fixlinuxfb.patch of Package qtbase
The switchToGraphicsMode() function calls the KDGETMODE ioctl() call, but passes the address of oldMode, which is already a pointer. Therefore, the current code makes the kernel write the "mode" value returned by the KDGETMODE ioctl() at the address of the oldMode pointer. This pointer becomes NULL, which makes the following line trigger a segfault. Since the function already receives as argument the address of oldMode, there is no need to do &oldMode when doing the ioctl() call. This patch fixes the following segfault: Program received signal SIGSEGV, Segmentation fault. 0x768acc40 in switchToGraphicsMode (oldMode=0x0, ttyfd=7) at qlinuxfbscreen.cpp:268 268 if (*oldMode != KD_GRAPHICS) { (gdb) bt Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com> --- src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp b/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp index 1dac60a..4d170f1 100644 --- a/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp +++ b/src/plugins/platforms/linuxfb/qlinuxfbscreen.cpp @@ -264,7 +264,7 @@ static int openTtyDevice(const QString &device) static bool switchToGraphicsMode(int ttyfd, int *oldMode) { - ioctl(ttyfd, KDGETMODE, &oldMode); + ioctl(ttyfd, KDGETMODE, oldMode); if (*oldMode != KD_GRAPHICS) { if (ioctl(ttyfd, KDSETMODE, KD_GRAPHICS) != 0) return false; -- 1.7.9.5