<div dir="ltr">BTW....I forgot to mention the problem got solved. Thanks to your suggestions.<div><br></div><div>Regards,</div><div>Saket Sinha</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jul 15, 2013 at 9:38 PM, Saket Sinha <span dir="ltr">&lt;<a href="mailto:saket.sinha89@gmail.com" target="_blank">saket.sinha89@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Russel:<div>Thank you a curly bracket was missing. How could I not notice.</div><div>Valdis:</div><div>I shall take your suggestions.</div>
<div>Mandeep:</div><div>Thank you for that enlighting ideas</div><div>
<br></div><div>Regards,</div><div>Saket Sinha</div><div><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jul 15, 2013 at 7:52 PM,  <span dir="ltr">&lt;<a href="mailto:Valdis.Kletnieks@vt.edu" target="_blank">Valdis.Kletnieks@vt.edu</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>On Mon, 15 Jul 2013 17:39:15 +0530, Mandeep Sandhu said:<br>
<br>
&gt; #define push_root() \<br>
&gt;       recursive_mutex_lock(&amp;context-&gt;id_lock);        \<br>
&gt;       context-&gt;uid = current-&gt;fsuid;                  \<br>
&gt;       context-&gt;gid = current-&gt;fsgid;                  \<br>
&gt;         do {                                            \<br>
&gt;             struct cred *new1 = prepare_creds();           \<br>
&gt;             //make changes to any member of this structure \<br>
&gt;             commit_creds(new1);                            \<br>
&gt;         } while(0);<br>
<br>
</div>Actually, this has 3 problems:<br>
<br>
1) You have a call to mutex_loc() that doesn&#39;t get unlocked. This Is Bad.<br>
<br>
2) If you&#39;re using the &#39;do { foo } while (0)&#39; trick, you want to<br>
put the *whole thing* inside the { } (Hint - you can put local variable<br>
definitions inside the curlies as well).<br>
<br>
3) Leave the ; off the &#39;while (0)&#39; in the macro definition, because:<br>
<br>
&gt; int main()<br>
&gt; {<br>
&gt;    printf(&quot;in main\n&quot;);<br>
&gt;    pushme<br>
&gt;   return 0;<br>
&gt; }<br>
<br>
Somebody will forget and put a ; after pushme - and in some contexts, the<br>
additional ; will then cause issues.<br>
<br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>