Re: Inline Macro issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



define push_root()\{
         recursive_mutex_lock(&context->id_lock);\
         context->uid = current_fsuid();\
         context->gid = current_fsgid();\               
         do{\
        struct cred *new2 = prepare_creds();\
        commit_creds(new2);\
}while(0)     

I am getting an error:
/home/saket/hepunion/fs/hepunion/cow.c:418:1: error: expected declaration or statement at end of input

Which is the last line of cow.c in the driver reporitory present at
https://github.com/HeisSpiter/hepunion

Sorry Mandeep your code is alright ,its some other error. I do not understand.

Regards,
Saket Sinha


On Mon, Jul 15, 2013 at 6:08 PM, Mandeep Sandhu <mandeepsandhu.chd@xxxxxxxxx> wrote:

On Mon, Jul 15, 2013 at 6:03 PM, Saket Sinha <saket.sinha89@xxxxxxxxx> wrote:
Mandeep:

Even this hasnt helped..though it was a btight idea. :(

And what _exact_ error does the compiler give if you use the new (modified) macro?

The re-def error should not be there as the variable "new1" is within the local scope now.

-mandeep

 


P.S.-I can give my system on remote via Team Viewer, if you want to try.

Regards,
Saket Sinha


On Mon, Jul 15, 2013 at 5:39 PM, Mandeep Sandhu <mandeepsandhu.chd@xxxxxxxxx> wrote:
How about:
#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);

HTH,
-mandeep



On Mon, Jul 15, 2013 at 5:27 PM, Saket Sinha <saket.sinha89@xxxxxxxxx> wrote:
Here is the macro

Now this driver is at 2.6.18 kernel. I have to upgrade it to 3.8.3.
As I have said
"current" in kernel is a global macro, that always point to the "struct task_struct * " of the currently executing task (for details on task_struct, ref Robert Love, pg 24-27).


Now if you look at thse two lines-

current->fsuid = 0; \
current->fsgid = 0

Now task struct does not contain fsuid and fsgid, instead you have 
struct cred containing fsuid and fsgid.

So normal method is 
struct cred *new1;
new1 =prepare_creds();
//make changes to any member of this structure 
commit_creds(new1);

Now this above action I need to perform through a macro, in order to bring minimal changes to the driver.

Now, I have told everything. Can someone suggest something that might work.

Regards,
Saket Sinha





On Mon, Jul 15, 2013 at 5:07 PM, Mandeep Sandhu <mandeepsandhu.chd@xxxxxxxxx> wrote:

On Mon, Jul 15, 2013 at 4:50 PM, Saket Sinha <saket.sinha89@xxxxxxxxx> wrote:
Mandip:
Error is expected error or declaration at the end of input

Without looking at the code, it's difficult to comment further.

Can you attach a small compilable example which exhibits the error?

-mandeep

 
Anish:
that '\' should not be there first of all and even if I put it same error







_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux