From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1D4BSc-0007gp-PB for qemu-devel@nongnu.org; Thu, 24 Feb 2005 00:22:50 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1D4BSa-0007gZ-8s for qemu-devel@nongnu.org; Thu, 24 Feb 2005 00:22:50 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1D4BPw-0006sK-Ty for qemu-devel@nongnu.org; Thu, 24 Feb 2005 00:20:05 -0500 Received: from [161.58.242.233] (helo=hotwww5.hotwww.com) by monty-python.gnu.org with esmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.34) id 1D4AiL-0001Kk-F7 for qemu-devel@nongnu.org; Wed, 23 Feb 2005 23:35:01 -0500 From: Thayne Harbaugh Content-Type: multipart/mixed; boundary="=-+MdLAExPF1A2+K4h2zdo" Date: Wed, 23 Feb 2005 21:34:53 -0700 Message-Id: <1109219693.29649.4.camel@localhost.localdomain> Mime-Version: 1.0 Subject: [Qemu-devel] [PATCH] OHW OF_setprop() zero-sized property Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel --=-+MdLAExPF1A2+K4h2zdo Content-Type: text/plain Content-Transfer-Encoding: 7bit The current implementation of OF_setprop() doesn't allow for value-less or zero-sized properties to be set. This breaks Linux 2.6 frame buffer since arch/ppc/syslib/prom_init.c:check_display() marks displays with a value-less property "linux,opened" and then drivers/video/offb.c:offb_init() later finds these displays marked with "linux,opened". --=-+MdLAExPF1A2+K4h2zdo Content-Disposition: attachment; filename=OpenHackWare-0.4-pre1c-OF_setprop_zero_size.patch Content-Type: text/x-patch; name=OpenHackWare-0.4-pre1c-OF_setprop_zero_size.patch; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Index: src/of.c =================================================================== --- src/of.c (revision 90) +++ src/of.c (working copy) @@ -3769,7 +3776,7 @@ static void OF_setprop (OF_env_t *OF_env) { unsigned char name[OF_NAMELEN_MAX], *namep; - unsigned char *value, *buffer; + unsigned char *value = NULL, *buffer; OF_node_t *node; OF_prop_t *prop; uint32_t phandle; @@ -3780,12 +3787,15 @@ ERROR("Cannot get pack %04x\n", phandle); return; } - value = malloc(len); - if (value == NULL) { + if (len && !(value = malloc(len))) { pushd(OF_env, -1); ERROR("%s: Cannot alloc property\n", __func__); return; } + if (!len && value) { + pushd(OF_env, -1); + ERROR("%s: NULL buffer for non-zero sized property!\n", __func__); + } for (i = 0; i < len; i++) value[i] = buffer[i]; prop = OF_property_set(OF_env, node, name, value, len); --=-+MdLAExPF1A2+K4h2zdo--