u32 buf[2], len;
__le32 buf[2]; u32 len;
static int role_read(struct policydb *p, struct hashtab *h, void *fp){	char *key = NULL;	struct role_datum *role;	int rc;	u32 buf[2], len;	role = kmalloc(sizeof(*role), GFP_KERNEL);	if (!role) {		rc = -ENOMEM;		goto out;	}	memset(role, 0, sizeof(*role));	rc = next_entry(buf, fp, sizeof buf);	if (rc < 0)		goto bad;	len = le32_to_cpu(buf[0]);	role->value = le32_to_cpu(buf[1]);	key = kmalloc(len + 1,GFP_KERNEL);	if (!key) {		rc = -ENOMEM;		goto bad;	}	rc = next_entry(key, fp, len);	if (rc < 0)		goto bad;	key[len] = 0;	rc = ebitmap_read(&role->dominates, fp);	if (rc)		goto bad;	rc = ebitmap_read(&role->types, fp);	if (rc)		goto bad;	if (strcmp(key, OBJECT_R) == 0) {		if (role->value != OBJECT_R_VAL) {			printk(KERN_ERR "Role %s has wrong value %d\n",			       OBJECT_R, role->value);			rc = -EINVAL;			goto bad;		}		rc = 0;		goto bad;	}	rc = hashtab_insert(h, key, role);	if (rc)		goto bad;out:	return rc;bad:	role_destroy(key, role, NULL);	goto out;}