title: Linux kernel module to check memory integrity
body: <p>I'm writing a kernel module that checks the integrity of code segments for running tasks by controlling checksums. I ran into a few hurdles:</p>
  
  <ol>
  <li>How can I get the <code>module_list</code> variable if it isn't exported by the kernel (there is no such symbol in <code>ksyms</code>)? I can see all modules calling the <code>lsmod</code> command, so how can I get it in my module?</li>
  <li>While my module is running it shows that some code segments have been changed. It always happens with certain libraries. Why does it happen? I thought that code segments were constant.</li>
  <li>Is it feasible to control memory access for process data from a kernel module and how to do it?</li>
  </ol>