i have an array
char* temp;
temp=kmalloc(3,GFP_KERNEL);
i need to expand this array each time i call this function Note: Realloc can't be used in linux kernel i dont know if it exists
Roll your own realloc but be noted that realloc is a poorly designed function interface. Just allocate a new buffer with kmalloc and memcpy the old data into the new buffer; that's essentially all that realloc does if it cannot expand the buffer in place.
You probably want to using something like Linux's Flexible Array implementation. See http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/flexible-arrays.txt;h=df904aec99044f8056ac530b9e9dc6de8f26f73e;hb=HEAD