Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  tracing: Fix null pointer deref with SEND_SIG_FORCED
  perf: Fix signed comparison in perf_adjust_period()
  powerpc/oprofile: fix potential buffer overrun in op_model_cell.c
  perf symbols: Set the DSO long name when using symbol_conf.vmlinux_name
This commit is contained in:
Linus Torvalds 2010-06-10 09:30:09 -07:00
commit 85ca7886f5
4 changed files with 13 additions and 5 deletions

View File

@ -1077,7 +1077,7 @@ static int calculate_lfsr(int n)
index = ENTRIES-1;
/* make sure index is valid */
if ((index > ENTRIES) || (index < 0))
if ((index >= ENTRIES) || (index < 0))
index = ENTRIES-1;
return initial_lfsr[index];

View File

@ -10,7 +10,8 @@
#define TP_STORE_SIGINFO(__entry, info) \
do { \
if (info == SEND_SIG_NOINFO) { \
if (info == SEND_SIG_NOINFO || \
info == SEND_SIG_FORCED) { \
__entry->errno = 0; \
__entry->code = SI_USER; \
} else if (info == SEND_SIG_PRIV) { \

View File

@ -1507,6 +1507,9 @@ do { \
divisor = nsec * frequency;
}
if (!divisor)
return dividend;
return div64_u64(dividend, divisor);
}
@ -1529,7 +1532,7 @@ static int perf_event_start(struct perf_event *event)
static void perf_adjust_period(struct perf_event *event, u64 nsec, u64 count)
{
struct hw_perf_event *hwc = &event->hw;
u64 period, sample_period;
s64 period, sample_period;
s64 delta;
period = perf_calculate_period(event, nsec, count);

View File

@ -1745,7 +1745,12 @@ static int dso__load_kernel_sym(struct dso *self, struct map *map,
if (symbol_conf.vmlinux_name != NULL) {
err = dso__load_vmlinux(self, map,
symbol_conf.vmlinux_name, filter);
goto out_try_fixup;
if (err > 0) {
dso__set_long_name(self,
strdup(symbol_conf.vmlinux_name));
goto out_fixup;
}
return err;
}
if (vmlinux_path != NULL) {
@ -1806,7 +1811,6 @@ static int dso__load_kernel_sym(struct dso *self, struct map *map,
pr_debug("Using %s for symbols\n", kallsyms_filename);
free(kallsyms_allocated_filename);
out_try_fixup:
if (err > 0) {
out_fixup:
if (kallsyms_filename != NULL)