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@gmail.com>wrote:
Here is the macro
https://github.com/HeisSpiter/hepunion/blob/master/fs/hepunion/hepunion.h#L3...
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).
https://github.com/HeisSpiter/hepunion/blob/master/fs/hepunion/hepunion.h#L3...
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. http://lxr.free-electrons.com/source/include/linux/cred.h#L102
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@gmail.com> wrote:
On Mon, Jul 15, 2013 at 4:50 PM, Saket Sinha <saket.sinha89@gmail.com>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