diff options
| -rw-r--r-- | arch/tile/kernel/stack.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/arch/tile/kernel/stack.c b/arch/tile/kernel/stack.c index 362284af3afd..c93977a62116 100644 --- a/arch/tile/kernel/stack.c +++ b/arch/tile/kernel/stack.c | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | #include <linux/mmzone.h> | 23 | #include <linux/mmzone.h> |
| 24 | #include <linux/dcache.h> | 24 | #include <linux/dcache.h> |
| 25 | #include <linux/fs.h> | 25 | #include <linux/fs.h> |
| 26 | #include <linux/string.h> | ||
| 26 | #include <asm/backtrace.h> | 27 | #include <asm/backtrace.h> |
| 27 | #include <asm/page.h> | 28 | #include <asm/page.h> |
| 28 | #include <asm/ucontext.h> | 29 | #include <asm/ucontext.h> |
| @@ -332,21 +333,18 @@ static void describe_addr(struct KBacktraceIterator *kbt, | |||
| 332 | } | 333 | } |
| 333 | 334 | ||
| 334 | if (vma->vm_file) { | 335 | if (vma->vm_file) { |
| 335 | char *s; | ||
| 336 | p = d_path(&vma->vm_file->f_path, buf, bufsize); | 336 | p = d_path(&vma->vm_file->f_path, buf, bufsize); |
| 337 | if (IS_ERR(p)) | 337 | if (IS_ERR(p)) |
| 338 | p = "?"; | 338 | p = "?"; |
| 339 | s = strrchr(p, '/'); | 339 | name = kbasename(p); |
| 340 | if (s) | ||
| 341 | p = s+1; | ||
| 342 | } else { | 340 | } else { |
| 343 | p = "anon"; | 341 | name = "anon"; |
| 344 | } | 342 | } |
| 345 | 343 | ||
| 346 | /* Generate a string description of the vma info. */ | 344 | /* Generate a string description of the vma info. */ |
| 347 | namelen = strlen(p); | 345 | namelen = strlen(name); |
| 348 | remaining = (bufsize - 1) - namelen; | 346 | remaining = (bufsize - 1) - namelen; |
| 349 | memmove(buf, p, namelen); | 347 | memmove(buf, name, namelen); |
| 350 | snprintf(buf + namelen, remaining, "[%lx+%lx] ", | 348 | snprintf(buf + namelen, remaining, "[%lx+%lx] ", |
| 351 | vma->vm_start, vma->vm_end - vma->vm_start); | 349 | vma->vm_start, vma->vm_end - vma->vm_start); |
| 352 | } | 350 | } |
