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