diff mbox series

Fix stack memory disclosure

Message ID 20190106075408.58405-1-vlad@tsyrklevich.net (mailing list archive)
State New, archived
Headers show
Series Fix stack memory disclosure | expand

Commit Message

Vlad Tsyrklevich Jan. 6, 2019, 7:54 a.m. UTC
Using [1] for static analysis I found that the OMAPFB_QUERY_PLANE,
OMAPFB_GET_COLOR_KEY, OMAPFB_GET_DISPLAY_INFO, and OMAPFB_GET_VRAM_INFO
cases could all leak uninitialized stack memory--either due to
uninitialized padding or 'reserved' fields.

Fix them by clearing the shared union used to store copied out data.

[1] https://github.com/vlad902/kernel-uninitialized-memory-checker

Signed-off-by: Vlad Tsyrklevich <vlad@tsyrklevich.net>
Cc: security@kernel.org

---
 drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Kees Cook Jan. 8, 2019, 11:41 p.m. UTC | #1
On Sat, Jan 5, 2019 at 11:51 PM Vlad Tsyrklevich <vlad@tsyrklevich.net> wrote:
>
> Using [1] for static analysis I found that the OMAPFB_QUERY_PLANE,
> OMAPFB_GET_COLOR_KEY, OMAPFB_GET_DISPLAY_INFO, and OMAPFB_GET_VRAM_INFO
> cases could all leak uninitialized stack memory--either due to
> uninitialized padding or 'reserved' fields.
>
> Fix them by clearing the shared union used to store copied out data.
>
> [1] https://github.com/vlad902/kernel-uninitialized-memory-checker
>
> Signed-off-by: Vlad Tsyrklevich <vlad@tsyrklevich.net>

Reviewed-by: Kees Cook <keescook@chromium.org>
Fixes: b39a982ddecf ("OMAP: DSS2: omapfb driver")

Since this driver is orphaned (according to MAINTAINERS), I think this
fix should go via Bart's tree. Bart, can you take this?

-Kees

> Cc: security@kernel.org
>
> ---
>  drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c b/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
> index 53f93616c..8e23160ec 100644
> --- a/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
> +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
> @@ -609,6 +609,8 @@ int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg)
>
>         int r = 0;
>
> +       memset(&p, 0, sizeof(p));
> +
>         switch (cmd) {
>         case OMAPFB_SYNC_GFX:
>                 DBG("ioctl SYNC_GFX\n");
> --
> 2.17.0
>
Bartlomiej Zolnierkiewicz Jan. 10, 2019, 3:10 p.m. UTC | #2
On 01/09/2019 12:41 AM, Kees Cook wrote:
> On Sat, Jan 5, 2019 at 11:51 PM Vlad Tsyrklevich <vlad@tsyrklevich.net> wrote:
>>
>> Using [1] for static analysis I found that the OMAPFB_QUERY_PLANE,
>> OMAPFB_GET_COLOR_KEY, OMAPFB_GET_DISPLAY_INFO, and OMAPFB_GET_VRAM_INFO
>> cases could all leak uninitialized stack memory--either due to
>> uninitialized padding or 'reserved' fields.
>>
>> Fix them by clearing the shared union used to store copied out data.
>>
>> [1] https://github.com/vlad902/kernel-uninitialized-memory-checker
>>
>> Signed-off-by: Vlad Tsyrklevich <vlad@tsyrklevich.net>
> 
> Reviewed-by: Kees Cook <keescook@chromium.org>
> Fixes: b39a982ddecf ("OMAP: DSS2: omapfb driver")

Thanks.

> Since this driver is orphaned (according to MAINTAINERS), I think this
> fix should go via Bart's tree. Bart, can you take this?

Sure, I will merge it tomorrow (I plan to send fbdev fixes pull request to
Linus next week).

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics

> -Kees
> 
>> Cc: security@kernel.org
>>
>> ---
>>  drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c b/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
>> index 53f93616c..8e23160ec 100644
>> --- a/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
>> +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
>> @@ -609,6 +609,8 @@ int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg)
>>
>>         int r = 0;
>>
>> +       memset(&p, 0, sizeof(p));
>> +
>>         switch (cmd) {
>>         case OMAPFB_SYNC_GFX:
>>                 DBG("ioctl SYNC_GFX\n");
>> --
>> 2.17.0
Bartlomiej Zolnierkiewicz Jan. 11, 2019, 12:45 p.m. UTC | #3
On 01/10/2019 04:10 PM, Bartlomiej Zolnierkiewicz wrote:
> 
> On 01/09/2019 12:41 AM, Kees Cook wrote:
>> On Sat, Jan 5, 2019 at 11:51 PM Vlad Tsyrklevich <vlad@tsyrklevich.net> wrote:
>>>
>>> Using [1] for static analysis I found that the OMAPFB_QUERY_PLANE,
>>> OMAPFB_GET_COLOR_KEY, OMAPFB_GET_DISPLAY_INFO, and OMAPFB_GET_VRAM_INFO
>>> cases could all leak uninitialized stack memory--either due to
>>> uninitialized padding or 'reserved' fields.
>>>
>>> Fix them by clearing the shared union used to store copied out data.
>>>
>>> [1] https://github.com/vlad902/kernel-uninitialized-memory-checker
>>>
>>> Signed-off-by: Vlad Tsyrklevich <vlad@tsyrklevich.net>
>>
>> Reviewed-by: Kees Cook <keescook@chromium.org>
>> Fixes: b39a982ddecf ("OMAP: DSS2: omapfb driver")
> 
> Thanks.
> 
>> Since this driver is orphaned (according to MAINTAINERS), I think this
>> fix should go via Bart's tree. Bart, can you take this?
> 
> Sure, I will merge it tomorrow (I plan to send fbdev fixes pull request to
> Linus next week).

Patch queued for 5.0 (with patch subject prefixed with "omap2fb: "), thanks.

Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
diff mbox series

Patch

diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c b/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
index 53f93616c..8e23160ec 100644
--- a/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
+++ b/drivers/video/fbdev/omap2/omapfb/omapfb-ioctl.c
@@ -609,6 +609,8 @@  int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd, unsigned long arg)
 
 	int r = 0;
 
+	memset(&p, 0, sizeof(p));
+
 	switch (cmd) {
 	case OMAPFB_SYNC_GFX:
 		DBG("ioctl SYNC_GFX\n");