NetBSD Problem Report #49411

From www@NetBSD.org  Sun Nov 23 10:31:00 2014
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [149.20.53.66])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(Client CN "mail.netbsd.org", Issuer "Postmaster NetBSD.org" (verified OK))
	by mollari.NetBSD.org (Postfix) with ESMTPS id 03225A6605
	for <gnats-bugs@gnats.NetBSD.org>; Sun, 23 Nov 2014 10:31:00 +0000 (UTC)
Message-Id: <20141123103058.CB14CA66D1@mollari.NetBSD.org>
Date: Sun, 23 Nov 2014 10:30:58 +0000 (UTC)
From: qfh02545@nifty.com
Reply-To: qfh02545@nifty.com
To: gnats-bugs@NetBSD.org
Subject: Pass invalid length to hdmi_infoframe_header_pack() in hdmi.h
X-Send-Pr-Version: www-1.0

>Number:         49411
>Category:       kern
>Synopsis:       Pass invalid length to hdmi_infoframe_header_pack() in hdmi.h
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    riastradh
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Nov 23 10:35:01 +0000 2014
>Closed-Date:    Sun Nov 23 16:43:46 +0000 2014
>Last-Modified:  Sun Jan 11 06:00:00 +0000 2015
>Originator:     HITOSHI Osada
>Release:        NetBSD 7.99.1
>Organization:
>Environment:
NetBSD amd785g 7.99.1 NetBSD 7.99.1 (AMD785GKMS) #0: Sun Nov 23 17:51:09 JST 2014  root@amd785g:/tmp/obj/sys/arch/amd64/compile/AMD785GKMS amd64
>Description:
The second argument of hdmi_infoframe_header_pack() should be 'infoframe body length', not 'infoframe packet length'.

>How-To-Repeat:

>Fix:
Index: hdmi.h
===================================================================
RCS file: /cvsroot/src/sys/external/bsd/drm2/include/linux/hdmi.h,v
retrieving revision 1.2
diff -u -r1.2 hdmi.h
--- hdmi.h      16 Jul 2014 20:59:58 -0000      1.2
+++ hdmi.h      23 Nov 2014 10:10:47 -0000
@@ -260,7 +260,7 @@

        KASSERT(frame->header.length == HDMI_AUDIO_INFOFRAME_SIZE);

-       ret = hdmi_infoframe_header_pack(&frame->header, length, p, size);
+       ret = hdmi_infoframe_header_pack(&frame->header, frame->header.length, p, size);
        if (ret < 0)
                return ret;
        p += HDMI_INFOFRAME_HEADER_SIZE;
@@ -335,7 +335,7 @@

        KASSERT(frame->header.length == HDMI_AVI_INFOFRAME_SIZE);

-       ret = hdmi_infoframe_header_pack(&frame->header, length, p, size);
+       ret = hdmi_infoframe_header_pack(&frame->header, frame->header.length, p, size);
        if (ret < 0)
                return ret;
        p += HDMI_INFOFRAME_HEADER_SIZE;
@@ -424,7 +424,7 @@

        KASSERT(frame->header.length == HDMI_SPD_INFOFRAME_SIZE);

-       ret = hdmi_infoframe_header_pack(&frame->header, length, p, size);
+       ret = hdmi_infoframe_header_pack(&frame->header, frame->header.length, p, size);
        if (ret < 0)
                return ret;
        p += HDMI_INFOFRAME_HEADER_SIZE;
@@ -490,7 +490,7 @@
        if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF)
                length += 1;

-       ret = hdmi_infoframe_header_pack(&frame->header, length, p, size);
+       ret = hdmi_infoframe_header_pack(&frame->header, frame->header.length, p, size);
        if (ret < 0)
                return ret;
        p += HDMI_INFOFRAME_HEADER_SIZE;

>Release-Note:

>Audit-Trail:
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/49411 CVS commit: src/sys/external/bsd/drm2/include/linux
Date: Sun, 23 Nov 2014 16:07:10 +0000

 Module Name:	src
 Committed By:	riastradh
 Date:		Sun Nov 23 16:07:10 UTC 2014

 Modified Files:
 	src/sys/external/bsd/drm2/include/linux: hdmi.h

 Log Message:
 Use correct length for hdmi_infoframe_header_pack in <linux/hdmi.h>.

 Fixes PR kern/49411.


 To generate a diff of this commit:
 cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/include/linux/hdmi.h

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/49411 CVS commit: src/sys/external/bsd/drm2/include/linux
Date: Sun, 23 Nov 2014 16:16:29 +0000

 Module Name:	src
 Committed By:	riastradh
 Date:		Sun Nov 23 16:16:29 UTC 2014

 Modified Files:
 	src/sys/external/bsd/drm2/include/linux: hdmi.h

 Log Message:
 Back out previous, fix PR kern/49411 correctly.

 frame->header.length is not initialized in the vendor packet case.
 Instead, make hdmi_infoframe_header_pack take the packet length and
 subtract the size of the header when packing the header.

 (Could make it take the payload length instead, but for callers it is
 more convenient to have a name for the whole packet length.)


 To generate a diff of this commit:
 cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/include/linux/hdmi.h

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

Responsible-Changed-From-To: kern-bug-people->riastradh
Responsible-Changed-By: riastradh@NetBSD.org
Responsible-Changed-When: Sun, 23 Nov 2014 16:43:46 +0000
Responsible-Changed-Why:
mine


State-Changed-From-To: open->closed
State-Changed-By: riastradh@NetBSD.org
State-Changed-When: Sun, 23 Nov 2014 16:43:46 +0000
State-Changed-Why:
fixed


From: HITOSHI Osada <qfh02545@nifty.com>
To: gnats-bugs@NetBSD.org
Cc: riastradh@NetBSD.org, kern-bug-people@netbsd.org, gnats-admin@netbsd.org,
        qfh02545@nifty.com
Subject: Re: Re: kern/49411 (Pass invalid length to hdmi_infoframe_header_pack() in hdmi.h)
Date: Mon, 24 Nov 2014 08:53:54 +0900 (JST)

 hdmi.h rev 1.4 does not fix my problem. ('DRM error in r600_hdmi_setmode: fail
 ed to pack AVI infoframe: -28')
 Please remove '(size - length < HDMI_INFOFRAME_HEADER_SIZE)' in hdmi_infoframe
 _header_pack().

 ----- Original Message -----
 >From: riastradh@NetBSD.org
 >To: riastradh@NetBSD.org, kern-bug-people@netbsd.org, netbsd-bugs@netbsd.org,
 >        gnats-admin@netbsd.org, riastradh@NetBSD.org, qfh02545@nifty.com
 >Subject: Re: kern/49411 (Pass invalid length to hdmi_infoframe_header_pack() 
 in hdmi.h)
 >Cc: 
 >Date: Sun, 23 Nov 2014 16:43:46 +0000 (UTC)
 >
 >
 >Synopsis: Pass invalid length to hdmi_infoframe_header_pack() in hdmi.h
 >
 >Responsible-Changed-From-To: kern-bug-people->riastradh
 >Responsible-Changed-By: riastradh@NetBSD.org
 >Responsible-Changed-When: Sun, 23 Nov 2014 16:43:46 +0000
 >Responsible-Changed-Why:
 >mine
 >
 >
 >State-Changed-From-To: open->closed
 >State-Changed-By: riastradh@NetBSD.org
 >State-Changed-When: Sun, 23 Nov 2014 16:43:46 +0000
 >State-Changed-Why:
 >fixed
 >
 >
 >

From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/49411 CVS commit: src/sys/external/bsd/drm2/include/linux
Date: Mon, 24 Nov 2014 01:27:07 +0000

 Module Name:	src
 Committed By:	riastradh
 Date:		Mon Nov 24 01:27:07 UTC 2014

 Modified Files:
 	src/sys/external/bsd/drm2/include/linux: hdmi.h

 Log Message:
 Fix bounds checking in hdmi_infoframe_header_pack (PR kern/49411).


 To generate a diff of this commit:
 cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/include/linux/hdmi.h

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Soren Jacobsen" <snj@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/49411 CVS commit: [netbsd-7] src
Date: Sun, 11 Jan 2015 05:59:18 +0000

 Module Name:	src
 Committed By:	snj
 Date:		Sun Jan 11 05:59:18 UTC 2015

 Modified Files:
 	src/distrib/sets/lists/modules [netbsd-7]: md.amd64 md.i386
 	src/sys/dev/ic [netbsd-7]: pcdisplayvar.h vgavar.h
 	src/sys/external/bsd/drm/dist/bsd-core [netbsd-7]: drm_drv.c
 	src/sys/external/bsd/drm2/dist/drm [netbsd-7]: drm_stub.c
 	src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_drv.h
 	src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]: cik.c ni.c si.c
 	src/sys/external/bsd/drm2/dist/include/drm [netbsd-7]: drmP.h
 	src/sys/external/bsd/drm2/drm [netbsd-7]: drm_drv.c drm_module.c
 	    drm_vm.c files.drmkms
 	src/sys/external/bsd/drm2/i915drm [netbsd-7]: files.i915drmkms
 	    i915_module.c
 	src/sys/external/bsd/drm2/include/linux [netbsd-7]: hdmi.h module.h
 	    moduleparam.h pci.h
 	src/sys/external/bsd/drm2/linux [netbsd-7]: linux_module.c
 	src/sys/external/bsd/drm2/nouveau [netbsd-7]: files.nouveau
 	    nouveau_module.c
 	src/sys/external/bsd/drm2/pci [netbsd-7]: drm_pci.c drm_pci_module.c
 	src/sys/external/bsd/drm2/radeon [netbsd-7]: radeon_module.c
 	src/sys/modules [netbsd-7]: Makefile
 	src/sys/modules/drmkms [netbsd-7]: Makefile
 	src/sys/modules/drmkms_linux [netbsd-7]: Makefile
 	src/sys/modules/i915drmkms [netbsd-7]: Makefile
 Added Files:
 	src/sys/external/bsd/drm2/drm [netbsd-7]: drm_sysctl.c
 	src/sys/external/bsd/drm2/include/drm [netbsd-7]: drm_sysctl.h
 	src/sys/external/bsd/drm2/ttm [netbsd-7]: files.ttm
 Removed Files:
 	src/sys/modules/drm2pci [netbsd-7]: Makefile

 Log Message:
 Pull up following revision(s) (requested by chs in ticket #401):
 	distrib/sets/lists/modules/md.amd64: revisions 1.46, 1.47 via patch
 	distrib/sets/lists/modules/md.i386: revisions 1.49, 1.50
 	sys/dev/ic/pcdisplayvar.h: revision 1.20
 	sys/dev/ic/vgavar.h: revision 1.32
 	sys/external/bsd/drm/dist/bsd-core/drm_drv.c: revision 1.26
 	sys/external/bsd/drm2/dist/drm/drm_agpsupport.c: revisions 1.5, 1.6
 	sys/external/bsd/drm2/dist/drm/drm_pci.c: revisions 1.4, 1.5
 	sys/external/bsd/drm2/dist/drm/drm_stub.c: revisions 1.6-1.8
 	sys/external/bsd/drm2/dist/drm/i915/i915_drv.h: revision 1.11
 	sys/external/bsd/drm2/dist/drm/radeon/cik.c: revision 1.3
 	sys/external/bsd/drm2/dist/drm/radeon/ni.c: revision 1.3
 	sys/external/bsd/drm2/dist/drm/radeon/si.c: revision 1.3
 	sys/external/bsd/drm2/dist/include/drm/drmP.h: revisions 1.8, 1.9
 	sys/external/bsd/drm2/dist/include/drm/drm_agpsupport.h: revisions 1.3, 1.4
 	sys/external/bsd/drm2/drm/drm_drv.c: revision 1.11
 	sys/external/bsd/drm2/drm/drm_module.c: revision 1.9
 	sys/external/bsd/drm2/drm/drm_sysctl.c: revisions 1.1-1.4
 	sys/external/bsd/drm2/drm/drm_vm.c: revision 1.7
 	sys/external/bsd/drm2/drm/files.drmkms: revisions 1.8, 1.9
 	sys/external/bsd/drm2/i915drm/files.i915drmkms: revision 1.9
 	sys/external/bsd/drm2/i915drm/i915_module.c: revisions 1.4, 1.5
 	sys/external/bsd/drm2/include/drm/drm_sysctl.h: revisions 1.1, 1.2
 	sys/external/bsd/drm2/include/linux/hdmi.h: revisions 1.3-1.5
 	sys/external/bsd/drm2/include/linux/module.h: revision 1.5
 	sys/external/bsd/drm2/include/linux/moduleparam.h: revisions 1.3, 1.4
 	sys/external/bsd/drm2/include/linux/pci.h: revision 1.11
 	sys/external/bsd/drm2/linux/linux_module.c: revision 1.5
 	sys/external/bsd/drm2/nouveau/files.nouveau: revision 1.4
 	sys/external/bsd/drm2/nouveau/nouveau_module.c: revision 1.3
 	sys/external/bsd/drm2/pci/drm_pci.c: revision 1.8
 	sys/external/bsd/drm2/pci/drm_pci_module.c: revision 1.3
 	sys/external/bsd/drm2/radeon/radeon_module.c: revision 1.3
 	sys/external/bsd/drm2/ttm/files.ttm: revision 1.1
 	sys/modules/drm2pci/Makefile: file removal
 	sys/modules/drmkms/Makefile: revisions 1.4-1.7
 	sys/modules/drmkms_linux/Makefile: revision 1.5
 	sys/modules/drmkms_pci/Makefile: revisions 1.3, 1.4
 	sys/modules/i915drmkms/Makefile: revisions 1.5-1.7
 Split drm ttm config into a separate file.
 --
 Fix module build of drmkms_linux.
 --
 Remove vestigial drm2pci module, replaced by drmkms_pci.
 --
 fix the module class.
 --
 add the drmkms modules
 --
 make a drm_agp_destroy() function to resolve the circular dependency between
 drmkms and drmkms_pci
 --
 finalize the idr code.
 --
 add drm_agp_destroy
 --
 fix drmkms module path for xen.
 --
 fix build failure.
 /tmp/bracket/build/2014.11.10.22.43.46-i386/src/sys/external/bsd/drm2/include/linux/pci.h:36:20: fatal error: acpica.h: No such file or directory
 --
 make this work: add agpsupport and sysctl code
 --
 move agpsupport to drmkms to avoid circular dependencies.
 --
 turn on dynamic ldscript creation to handle link set symbol definitions
 used in the automatic sysctl creation.
 --
 Add __link_set based code to automatically convert the linux module parameters
 into sysctls.
 --
 this module needs MKLDSCRIPT too now
 --
 more _KERNEL_OPT
 --
 prettify and add to all the modules that have it.
 --
 fix description setting.
 --
 Adjust flags to allow building with clang.
 --
 Fix build with clang.
 --
 Drop casts in favour of expressions that actually give the right
 pointer.
 --
 Move all PCI/AGP code back to drmkms_pci module where it belongs.
 --
 Use correct length for hdmi_infoframe_header_pack in <linux/hdmi.h>.
 Fixes PR kern/49411.
 --
 Back out previous, fix PR kern/49411 correctly.
 frame->header.length is not initialized in the vendor packet case.
 Instead, make hdmi_infoframe_header_pack take the packet length and
 subtract the size of the header when packing the header.
 (Could make it take the payload length instead, but for callers it is
 more convenient to have a name for the whole packet length.)
 --
 Fix bounds checking in hdmi_infoframe_header_pack (PR kern/49411).
 --
 Trivial build fix for no options SYSCTL_INCLUDE_DESCR case, to
 avoid -Werror.
 OK christos@ and riastradh@
 --
 fix debugging compilation (ALL kernel)
 --
 nouveau_nv50_fence.c needs -Wno-shadow.
 --
 fix a confusion between dev_t and devmajor_t, and include the primary
 minor when calling makedev().


 To generate a diff of this commit:
 cvs rdiff -u -r1.41.2.1 -r1.41.2.2 src/distrib/sets/lists/modules/md.amd64
 cvs rdiff -u -r1.46 -r1.46.2.1 src/distrib/sets/lists/modules/md.i386
 cvs rdiff -u -r1.19 -r1.19.38.1 src/sys/dev/ic/pcdisplayvar.h
 cvs rdiff -u -r1.30 -r1.30.12.1 src/sys/dev/ic/vgavar.h
 cvs rdiff -u -r1.25 -r1.25.2.1 \
     src/sys/external/bsd/drm/dist/bsd-core/drm_drv.c
 cvs rdiff -u -r1.5 -r1.5.2.1 src/sys/external/bsd/drm2/dist/drm/drm_stub.c
 cvs rdiff -u -r1.7.2.3 -r1.7.2.4 \
     src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
 cvs rdiff -u -r1.2 -r1.2.4.1 src/sys/external/bsd/drm2/dist/drm/radeon/cik.c \
     src/sys/external/bsd/drm2/dist/drm/radeon/ni.c \
     src/sys/external/bsd/drm2/dist/drm/radeon/si.c
 cvs rdiff -u -r1.7 -r1.7.2.1 \
     src/sys/external/bsd/drm2/dist/include/drm/drmP.h
 cvs rdiff -u -r1.9.2.1 -r1.9.2.2 src/sys/external/bsd/drm2/drm/drm_drv.c
 cvs rdiff -u -r1.7.2.1 -r1.7.2.2 src/sys/external/bsd/drm2/drm/drm_module.c
 cvs rdiff -u -r0 -r1.4.4.2 src/sys/external/bsd/drm2/drm/drm_sysctl.c
 cvs rdiff -u -r1.5.2.1 -r1.5.2.2 src/sys/external/bsd/drm2/drm/drm_vm.c
 cvs rdiff -u -r1.7 -r1.7.2.1 src/sys/external/bsd/drm2/drm/files.drmkms
 cvs rdiff -u -r1.5.2.2 -r1.5.2.3 \
     src/sys/external/bsd/drm2/i915drm/files.i915drmkms
 cvs rdiff -u -r1.3 -r1.3.2.1 src/sys/external/bsd/drm2/i915drm/i915_module.c
 cvs rdiff -u -r0 -r1.2.4.2 src/sys/external/bsd/drm2/include/drm/drm_sysctl.h
 cvs rdiff -u -r1.2 -r1.2.4.1 src/sys/external/bsd/drm2/include/linux/hdmi.h
 cvs rdiff -u -r1.4 -r1.4.2.1 src/sys/external/bsd/drm2/include/linux/module.h
 cvs rdiff -u -r1.2 -r1.2.8.1 \
     src/sys/external/bsd/drm2/include/linux/moduleparam.h
 cvs rdiff -u -r1.7.2.3 -r1.7.2.4 \
     src/sys/external/bsd/drm2/include/linux/pci.h
 cvs rdiff -u -r1.4 -r1.4.2.1 src/sys/external/bsd/drm2/linux/linux_module.c
 cvs rdiff -u -r1.2.4.1 -r1.2.4.2 \
     src/sys/external/bsd/drm2/nouveau/files.nouveau
 cvs rdiff -u -r1.1.4.1 -r1.1.4.2 \
     src/sys/external/bsd/drm2/nouveau/nouveau_module.c
 cvs rdiff -u -r1.6 -r1.6.2.1 src/sys/external/bsd/drm2/pci/drm_pci.c
 cvs rdiff -u -r1.2 -r1.2.8.1 src/sys/external/bsd/drm2/pci/drm_pci_module.c
 cvs rdiff -u -r1.2 -r1.2.4.1 src/sys/external/bsd/drm2/radeon/radeon_module.c
 cvs rdiff -u -r0 -r1.1.4.2 src/sys/external/bsd/drm2/ttm/files.ttm
 cvs rdiff -u -r1.140 -r1.140.2.1 src/sys/modules/Makefile
 cvs rdiff -u -r1.2 -r0 src/sys/modules/drm2pci/Makefile
 cvs rdiff -u -r1.3 -r1.3.2.1 src/sys/modules/drmkms/Makefile
 cvs rdiff -u -r1.4 -r1.4.2.1 src/sys/modules/drmkms_linux/Makefile
 cvs rdiff -u -r1.4 -r1.4.2.1 src/sys/modules/i915drmkms/Makefile

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.