On Sat, Apr 20, 2019 at 3:39 AM Yang Yingliang <yangyingliang@xxxxxxxxxx> wrote:This is a original message, without patch applied.
I'm not sure you got my point.I went back and looked at your previous emails again to try and
understand what you are talking about, and I'm a little confused by
some of the output ...
--- a/kernel/acct.cOkay, with this patch applied we should the task/cred info when
+++ b/kernel/acct.c
@@ -481,6 +481,7 @@ static void do_acct_process(struct bsd_acct_struct
*acct)
flim = current->signal->rlim[RLIMIT_FSIZE].rlim_cur;
current->signal->rlim[RLIMIT_FSIZE].rlim_cur = RLIM_INFINITY;
/* Perform file operations on behalf of whoever enabled
accounting */
+ pr_info("task:%px new cred:%px real cred:%px cred:%px\n",
current, file->f_cred, current->real_cred, current->cred);
orig_cred = override_creds(file->f_cred);
do_acct_process is called. Got it.
Messages:Okay, it looks like do_acct_process() was called and f_cred,
[ 56.643298] task:ffff88841a9595c0 new cred:ffff88841ae450c0 real
cred:ffff88841ae450c0 cred:ffff88841ae450c0 //They are same.
real_cred, and cred are all the same.
This is the message when the BUG_ON was triggered without applying any
[ 56.646609] Process accounting resumedIt looks like do_acct_process() has called check_free_space() now. So
far so good.
[ 56.649943] task:ffff88841a9595c0 new cred:ffff88841ae450c0 realWait a minute ... why are we seeing this again? Looking at the task
cred:ffff88841c96c300 cred:ffff88841ae450c0
pointer and the timestamp, this is the same task exiting and trying to
write to the accounting file, yes? This output is particularly
curious since it appears that real_cred has changed; where is this
happening?