diff options
| author | Dave Airlie <airlied@redhat.com> | 2016-03-14 09:42:34 +1000 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2016-03-14 09:46:02 +1000 |
| commit | 9b61c0fcdf0cfd20a85d9856d46142e7f297de0a (patch) | |
| tree | d4abe6aa3f4e1e088f9da1d0597e078b1fe58912 /lib/vsprintf.c | |
| parent | Merge branch 'drm-next-4.6' of git://people.freedesktop.org/~agd5f/linux into... (diff) | |
| parent | Merge tag 'drm-intel-fixes-2016-03-11' of git://anongit.freedesktop.org/drm-i... (diff) | |
| download | linux-9b61c0fcdf0cfd20a85d9856d46142e7f297de0a.tar.gz linux-9b61c0fcdf0cfd20a85d9856d46142e7f297de0a.zip | |
Merge drm-fixes into drm-next.
Nouveau wanted this to avoid some worse conflicts when I merge that.
Diffstat (limited to 'lib/vsprintf.c')
| -rw-r--r-- | lib/vsprintf.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 48ff9c36644d..f44e178e6ede 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -1590,22 +1590,23 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, return buf; } case 'K': - /* - * %pK cannot be used in IRQ context because its test - * for CAP_SYSLOG would be meaningless. - */ - if (kptr_restrict && (in_irq() || in_serving_softirq() || - in_nmi())) { - if (spec.field_width == -1) - spec.field_width = default_width; - return string(buf, end, "pK-error", spec); - } - switch (kptr_restrict) { case 0: /* Always print %pK values */ break; case 1: { + const struct cred *cred; + + /* + * kptr_restrict==1 cannot be used in IRQ context + * because its test for CAP_SYSLOG would be meaningless. + */ + if (in_irq() || in_serving_softirq() || in_nmi()) { + if (spec.field_width == -1) + spec.field_width = default_width; + return string(buf, end, "pK-error", spec); + } + /* * Only print the real pointer value if the current * process has CAP_SYSLOG and is running with the @@ -1615,8 +1616,7 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, * leak pointer values if a binary opens a file using * %pK and then elevates privileges before reading it. */ - const struct cred *cred = current_cred(); - + cred = current_cred(); if (!has_capability_noaudit(current, CAP_SYSLOG) || !uid_eq(cred->euid, cred->uid) || !gid_eq(cred->egid, cred->gid)) |
