diff options
Diffstat (limited to 'kernel/events/core.c')
-rw-r--r-- | kernel/events/core.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index 17b3c6cf1606..4dc078d18929 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c | |||
@@ -5144,8 +5144,8 @@ static void perf_event_mmap_event(struct perf_mmap_event *mmap_event) | |||
5144 | 5144 | ||
5145 | buf = kmalloc(PATH_MAX, GFP_KERNEL); | 5145 | buf = kmalloc(PATH_MAX, GFP_KERNEL); |
5146 | if (!buf) { | 5146 | if (!buf) { |
5147 | name = strncpy(tmp, "//enomem", sizeof(tmp)); | 5147 | name = "//enomem"; |
5148 | goto got_name; | 5148 | goto cpy_name; |
5149 | } | 5149 | } |
5150 | /* | 5150 | /* |
5151 | * d_path() works from the end of the rb backwards, so we | 5151 | * d_path() works from the end of the rb backwards, so we |
@@ -5154,8 +5154,8 @@ static void perf_event_mmap_event(struct perf_mmap_event *mmap_event) | |||
5154 | */ | 5154 | */ |
5155 | name = d_path(&file->f_path, buf, PATH_MAX - sizeof(u64)); | 5155 | name = d_path(&file->f_path, buf, PATH_MAX - sizeof(u64)); |
5156 | if (IS_ERR(name)) { | 5156 | if (IS_ERR(name)) { |
5157 | name = strncpy(tmp, "//toolong", sizeof(tmp)); | 5157 | name = "//toolong"; |
5158 | goto got_name; | 5158 | goto cpy_name; |
5159 | } | 5159 | } |
5160 | inode = file_inode(vma->vm_file); | 5160 | inode = file_inode(vma->vm_file); |
5161 | dev = inode->i_sb->s_dev; | 5161 | dev = inode->i_sb->s_dev; |
@@ -5163,30 +5163,30 @@ static void perf_event_mmap_event(struct perf_mmap_event *mmap_event) | |||
5163 | gen = inode->i_generation; | 5163 | gen = inode->i_generation; |
5164 | maj = MAJOR(dev); | 5164 | maj = MAJOR(dev); |
5165 | min = MINOR(dev); | 5165 | min = MINOR(dev); |
5166 | 5166 | goto got_name; | |
5167 | } else { | 5167 | } else { |
5168 | name = (char *)arch_vma_name(vma); | 5168 | name = (char *)arch_vma_name(vma); |
5169 | if (name) { | 5169 | if (name) |
5170 | name = strncpy(tmp, name, sizeof(tmp) - 1); | 5170 | goto cpy_name; |
5171 | tmp[sizeof(tmp) - 1] = '\0'; | ||
5172 | goto got_name; | ||
5173 | } | ||
5174 | 5171 | ||
5175 | if (vma->vm_start <= vma->vm_mm->start_brk && | 5172 | if (vma->vm_start <= vma->vm_mm->start_brk && |
5176 | vma->vm_end >= vma->vm_mm->brk) { | 5173 | vma->vm_end >= vma->vm_mm->brk) { |
5177 | name = strncpy(tmp, "[heap]", sizeof(tmp)); | 5174 | name = "[heap]"; |
5178 | goto got_name; | 5175 | goto cpy_name; |
5179 | } | 5176 | } |
5180 | if (vma->vm_start <= vma->vm_mm->start_stack && | 5177 | if (vma->vm_start <= vma->vm_mm->start_stack && |
5181 | vma->vm_end >= vma->vm_mm->start_stack) { | 5178 | vma->vm_end >= vma->vm_mm->start_stack) { |
5182 | name = strncpy(tmp, "[stack]", sizeof(tmp)); | 5179 | name = "[stack]"; |
5183 | goto got_name; | 5180 | goto cpy_name; |
5184 | } | 5181 | } |
5185 | 5182 | ||
5186 | name = strncpy(tmp, "//anon", sizeof(tmp)); | 5183 | name = "//anon"; |
5187 | goto got_name; | 5184 | goto cpy_name; |
5188 | } | 5185 | } |
5189 | 5186 | ||
5187 | cpy_name: | ||
5188 | strlcpy(tmp, name, sizeof(tmp)); | ||
5189 | name = tmp; | ||
5190 | got_name: | 5190 | got_name: |
5191 | /* | 5191 | /* |
5192 | * Since our buffer works in 8 byte units we need to align our string | 5192 | * Since our buffer works in 8 byte units we need to align our string |