Malloc can be called in user space as well as in kernel space.it allocates physically fragmented memory area .It doesnot actually allocate physical memory.Physical memory can be mapped later.
Kmalloc can be called only in kernel space.it allocates physically contiguous memory chunk.
Memory allocated by kmalloc is reserved and locked,which cannot be swapped.