|
@@ -659,7 +659,7 @@ static int create_trace_kprobe(int argc, char **argv)
|
|
char *symbol = NULL, *event = NULL, *group = NULL;
|
|
char *symbol = NULL, *event = NULL, *group = NULL;
|
|
int maxactive = 0;
|
|
int maxactive = 0;
|
|
char *arg;
|
|
char *arg;
|
|
- unsigned long offset = 0;
|
|
|
|
|
|
+ long offset = 0;
|
|
void *addr = NULL;
|
|
void *addr = NULL;
|
|
char buf[MAX_EVENT_NAME_LEN];
|
|
char buf[MAX_EVENT_NAME_LEN];
|
|
|
|
|
|
@@ -747,7 +747,7 @@ static int create_trace_kprobe(int argc, char **argv)
|
|
symbol = argv[1];
|
|
symbol = argv[1];
|
|
/* TODO: support .init module functions */
|
|
/* TODO: support .init module functions */
|
|
ret = traceprobe_split_symbol_offset(symbol, &offset);
|
|
ret = traceprobe_split_symbol_offset(symbol, &offset);
|
|
- if (ret) {
|
|
|
|
|
|
+ if (ret || offset < 0 || offset > UINT_MAX) {
|
|
pr_info("Failed to parse either an address or a symbol.\n");
|
|
pr_info("Failed to parse either an address or a symbol.\n");
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|