title: Can I pass a pointer to linux kernel space for a __user parameter?
body: <p>I've read about the <code>__user</code> specifier in the Linux kernel being used to tag function parameters for <a href="http://en.wikipedia.org/wiki/Sparse" rel="nofollow">Sparse</a> to check function arguments.</p>
  
  <p>In particular, given</p>
  
  <pre><code>int foo1( char * buf );
  </code></pre>
  
  <p>one must not pass a pointer to user space for <code>buf</code>.</p>
  
  <p>How about the other way round? In</p>
  
  <pre><code>int foo2( char __user * buf );
  </code></pre>
  
  <p><strong>may</strong> or <strong>must</strong> I pass a user-supplied pointer? I'd guess the former because a user-supplied pointer could really be anything, but I haven't found a formal specification of __user anywhere.</p>