BTW....I forgot to mention the problem got solved. Thanks to your
suggestions.

Regards,
Saket Sinha


On Mon, Jul 15, 2013 at 9:38 PM, Saket Sinha <[email protected]>wrote:

> Russel:
> Thank you a curly bracket was missing. How could I not notice.
> Valdis:
> I shall take your suggestions.
> Mandeep:
> Thank you for that enlighting ideas
>
> Regards,
> Saket Sinha
>
>
>
> On Mon, Jul 15, 2013 at 7:52 PM, <[email protected]> wrote:
>
>> On Mon, 15 Jul 2013 17:39:15 +0530, Mandeep Sandhu said:
>>
>> > #define push_root() \
>> >       recursive_mutex_lock(&context->id_lock);        \
>> >       context->uid = current->fsuid;                  \
>> >       context->gid = current->fsgid;                  \
>> >         do {                                            \
>> >             struct cred *new1 = prepare_creds();           \
>> >             //make changes to any member of this structure \
>> >             commit_creds(new1);                            \
>> >         } while(0);
>>
>> Actually, this has 3 problems:
>>
>> 1) You have a call to mutex_loc() that doesn't get unlocked. This Is Bad.
>>
>> 2) If you're using the 'do { foo } while (0)' trick, you want to
>> put the *whole thing* inside the { } (Hint - you can put local variable
>> definitions inside the curlies as well).
>>
>> 3) Leave the ; off the 'while (0)' in the macro definition, because:
>>
>> > int main()
>> > {
>> >    printf("in main\n");
>> >    pushme
>> >   return 0;
>> > }
>>
>> Somebody will forget and put a ; after pushme - and in some contexts, the
>> additional ; will then cause issues.
>>
>>
>
_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to