memset(new, 0, sizeof(*new)); 
int ebitmap_set_bit(struct ebitmap *e, unsigned long bit, int value){	struct ebitmap_node *n, *prev, *new;	prev = NULL;	n = e->node;	while (n && n->startbit <= bit) {		if ((n->startbit + MAPSIZE) > bit) {			if (value) {				n->map |= (MAPBIT << (bit - n->startbit));			} else {				n->map &= ~(MAPBIT << (bit - n->startbit));				if (!n->map) {					/* drop this node from the bitmap */					if (!n->next) {						/*						 * this was the highest map						 * within the bitmap						 */						if (prev)							e->highbit = prev->startbit + MAPSIZE;						else							e->highbit = 0;					}					if (prev)						prev->next = n->next;					else						e->node = n->next;					kfree(n);				}			}			return 0;		}		prev = n;		n = n->next;	}	if (!value)		return 0;	new = kmalloc(sizeof(*new), GFP_ATOMIC);	if (!new)		return -ENOMEM;	memset(new, 0, sizeof(*new));	new->startbit = bit & ~(MAPSIZE - 1);	new->map = (MAPBIT << (bit - new->startbit));	if (!n)		/* this node will be the highest map within the bitmap */		e->highbit = new->startbit + MAPSIZE;	if (prev) {		new->next = prev->next;		prev->next = new;	} else {		new->next = e->node;		e->node = new;	}	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/89d155ef62e5e0c10e4b37aaa5056f0beafe10e6/ebitmap.c/clean/security/selinux/ss/ebitmap.c