Date: Fri, 20 Jan 2012 22:38:45 +0100 From: Anders Gavare <gavare@gmail.com> To: freebsd-ppc@freebsd.org Subject: possible bug? OF_getprop() < sizeof() Message-ID: <1327095525.2825.10.camel@localhost.localdomain>
next in thread | raw e-mail | index | archive | help
If I understood things correctly, there's a possible minor bug in ofw_machdep.c for PowerPC, in parse_ofw_memory: /* * Get #address-cells from root node, defaulting to 1 if it cannot * be found. */ phandle = OF_finddevice("/"); if (OF_getprop(phandle, "#address-cells", &address_cells, sizeof(address_cells)) < sizeof(address_cells)) address_cells = 1; if (OF_getprop(phandle, "#size-cells", &size_cells, sizeof(size_cells)) < sizeof(size_cells)) size_cells = 1; Running the code in GXemul, it seems that the comparison between OF_getprop's return value (-1 in case the property is not found) and the sizeof value is done as unsigned integers. ... <ofwcall(0x908600,&smp_no_rendevous_barrier,&ofw_rendezvous_dispatch,&smp_no_rendevous_barrier,..)> <0xfff00000(0x908600,"D",0,0,..)> [ of: getprop(1, "#address-cells", 0x908e7c, 4) ] [ of: WARNING: getprop: no property '#address-cells' at handle 1 (device '') ] <smp_no_rendevous_barrier(0x9085e4,"D",0,0,..)> <spinlock_exit(0x9085e4,"D",0,0,..)> <critical_exit(0x9085e4,"D",0,0,..)> <ofw_real_stop(-1,"D",0,0,..)> 0068bcf8: 2b830003 cmplwi cr7,r3,3 BREAKPOINT: pc = 0x68bcf8 (The instruction has not yet executed.) GXemul> print r3 0xffffffffffffffff GXemul> s 10 0068bcf8: 2b830003 cmplwi cr7,r3,3 0068bcfc: 419d000c bc 12,29,0x68bd08 <parse_ofw_memory+0x5c> 0068bd08: 7fc3f378 mr r3,r30 0068bd0c: 3c800090 lis r4,144 0068bd10: 3884deb8 subi r4,r4,8520 0068bd14: 38a10818 addi r5,r1,2072 0068bd18: 38c00004 li r6,4 0068bd1c: 4bfe0361 bl 0x66c07c <OF_getprop> <OF_getprop(0x1,"#size-cells",0x908e78,4,..)> Real machines perhaps always have #address-cells and #size-cells properties for the / node, so this problem perhaps does not show up IRL. However, if this pattern OF_getprop(...) < sizeof(..) is common, maybe there are other similar bugs. Or did I misunderstand the semantics of cmplwi? (The binary and source code were from ftp://ftp.freebsd.org/pub/FreeBSD/releases/powerpc/powerpc/9.0-RELEASE.) Anders (not subscribed to the list)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1327095525.2825.10.camel>