kprobe_opcode_t *get_insn_slot(void) 
kprobe_opcode_t __kprobes *get_insn_slot(void) 
kprobe_opcode_t *get_insn_slot(void){	struct kprobe_insn_page *kip;	struct hlist_node *pos;	hlist_for_each(pos, &kprobe_insn_pages) {		kip = hlist_entry(pos, struct kprobe_insn_page, hlist);		if (kip->nused < INSNS_PER_PAGE) {			int i;			for (i = 0; i < INSNS_PER_PAGE; i++) {				if (!kip->slot_used[i]) {					kip->slot_used[i] = 1;					kip->nused++;					return kip->insns + (i * MAX_INSN_SIZE);				}			}			/* Surprise!  No unused slots.  Fix kip->nused. */			kip->nused = INSNS_PER_PAGE;		}	}	/* All out of space.  Need to allocate a new page. Use slot 0.*/	kip = kmalloc(sizeof(struct kprobe_insn_page), GFP_KERNEL);	if (!kip) {		return NULL;	}	/*	 * Use module_alloc so this page is within +/- 2GB of where the	 * kernel image and loaded module images reside. This is required	 * so x86_64 can correctly handle the %rip-relative fixups.	 */	kip->insns = module_alloc(PAGE_SIZE);	if (!kip->insns) {		kfree(kip);		return NULL;	}	INIT_HLIST_NODE(&kip->hlist);	hlist_add_head(&kip->hlist, &kprobe_insn_pages);	memset(kip->slot_used, 0, INSNS_PER_PAGE);	kip->slot_used[0] = 1;	kip->nused = 1;	return kip->insns;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/d0aaff9796c3310326d10da44fc0faed352a1d29/kprobes.c/clean/kernel/kprobes.c