Can someone explain the following kernel module code. I&#39;m not familiar with x86 assembly so have problem understanding this part. Also it seems this code is able to modify the kernel stack.<div><br>/******************start****************/</div><div><br></div><div>#include &lt;linux/module.h&gt;<br><br>MODULE_LICENSE(&quot;GPL&quot;);<br><br>int __init init(void) __attribute__((noreturn))<br>{<br>     unsigned long long cr0 = read_cr0();<br>     write_cr0(cr0 &amp; ~(1 &lt;&lt; 4));  /* Clear Extension Type (ET) bit */<br>     *(unsigned char *)sys_kill = 0xc3;  /* opcode for &quot;ret&quot; */<br>     write_cr0(cr0);<br><br>     /* Optional code ahead to hide traces of this module. */<br>     __this_module.refcnt = 1;<br>     __this_module.state = MODULE_STATE_LIVE;<br><br>     asm<br>     (<br>          &quot;mov %0, %%rsp\n\t&quot;<br>          &quot;mov %1, %%rdi\n\t&quot;  /* name = __<a href="http://this_module.name">this_module.name</a> */<br>          &quot;xor %%rsi, %%rsi\n\t&quot;  /* flags = 0 */<br>          &quot;jmp sys_delete_module\n\t&quot;  /* call delete_module(name, flags) */<br>          :: &quot;r&quot;(current-&gt;stack + THREAD_SIZE - sizeof(struct pt_regs) - 8), &quot;r&quot;(__<a href="http://this_module.name">this_module.name</a>) :<br>     );<br>}<br><br>void __exit exit(void)<br>{<br>    return;<br>}<div><br></div><div>/*******************end*****************/</div><div><br></div></div>