struct gendisk *disk = kmalloc(sizeof(struct gendisk), GFP_KERNEL); if (disk) { memset(disk, 0, sizeof(struct gendisk)); if (!init_disk_stats(disk)) { kfree(disk); return NULL; } if (minors > 1) { int size = (minors - 1) * sizeof(struct hd_struct *); disk->part = kmalloc(size, GFP_KERNEL); if (!disk->part) { kfree(disk); return NULL; } memset(disk->part, 0, size); } disk->minors = minors; kobj_set_kset_s(disk,block_subsys); kobject_init(&disk->kobj); rand_initialize_disk(disk); } return disk; 
return alloc_disk_node(minors, -1); 
struct gendisk *alloc_disk(int minors){	struct gendisk *disk = kmalloc(sizeof(struct gendisk), GFP_KERNEL);	if (disk) {		memset(disk, 0, sizeof(struct gendisk));		if (!init_disk_stats(disk)) {			kfree(disk);			return NULL;		}		if (minors > 1) {			int size = (minors - 1) * sizeof(struct hd_struct *);			disk->part = kmalloc(size, GFP_KERNEL);			if (!disk->part) {				kfree(disk);				return NULL;			}			memset(disk->part, 0, size);		}		disk->minors = minors;		kobj_set_kset_s(disk,block_subsys);		kobject_init(&disk->kobj);		rand_initialize_disk(disk);	}	return disk;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/1946089a109251655c5438d92c539bd2930e71ea/genhd.c/clean/drivers/block/genhd.c