title: Sparse warnings: incorrect type in assignment
body: <p>I'm trying to make a patch but i never met this type of warning:</p>
  
  <pre><code>warning: incorrect type in assignment (different modifiers)
  expected struct ipt_entry *[assigned] e
  got struct ipt_entry [pure] *
  </code></pre>
  
  <p>This error appears at this point:</p>
  
  <pre><code>e = ipt_next_entry(e);
  </code></pre>
  
  <p>While the declaration of both e and ipt_next_entry looks like this:</p>
  
  <pre><code>struct ipt_entry *e;
  
  static inline __pure
  struct ipt_entry *ipt_next_entry(const struct ipt_entry *entry)
  {
         return (void *)entry + entry-&gt;next_offset;
  }
  </code></pre>
  
  <p>My question exactly: 
  What __pure does? What can i do? Where can I read something about this? I really can't find anything on the internet. </p>