rc = it(p, pathp, data); 
if ((*pathp) == '/') { char *lp, *np; for (lp = NULL, np = pathp; *np; np++) if ((*np) == '/') lp = np+1; if (lp != NULL) pathp = lp; } rc = it(p, pathp, depth, data); 
static int __init scan_flat_dt(int (*it)(unsigned long node,					 const char *full_path, void *data),			       void *data){	unsigned long p = ((unsigned long)initial_boot_params) +		initial_boot_params->off_dt_struct;	int rc = 0;	do {		u32 tag = *((u32 *)p);		char *pathp;				p += 4;		if (tag == OF_DT_END_NODE)			continue;		if (tag == OF_DT_END)			break;		if (tag == OF_DT_PROP) {			u32 sz = *((u32 *)p);			p += 8;			p = _ALIGN(p, sz >= 8 ? 8 : 4);			p += sz;			p = _ALIGN(p, 4);			continue;		}		if (tag != OF_DT_BEGIN_NODE) {			printk(KERN_WARNING "Invalid tag %x scanning flattened"			       " device tree !\n", tag);			return -EINVAL;		}		pathp = (char *)p;		p = _ALIGN(p + strlen(pathp) + 1, 4);		rc = it(p, pathp, data);		if (rc != 0)			break;			} while(1);	return rc;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/34153fa3af45d84f3221d9b67ba2ab7e8a220d28/prom.c/buggy/arch/ppc64/kernel/prom.c