In sys_faccessat you temporarily allocate a cred object which is
discarded in the end. With a few more macro definitions you could
create a dup_cred variant which initialized an automatic variable of
type struct cred. This way the kmalloc/kfree pair would fall away.
access is actually used frequently. For instance, ld.so uses it on
every startup as a quicker possibility to check for a file which
usually doesn't exist. So, speeding up access has some small effect
on performance. The resulting code might actually reduce the kernel
size a bit due to all the checks and calls which go away.
-