fprobe: Add nr_maxactive to specify rethook_node pool size
[ Upstream commit59a7a29856
] Add nr_maxactive to specify rethook_node pool size. This means the maximum number of actively running target functions concurrently for probing by exit_handler. Note that if the running function is preempted or sleep, it is still counted as 'active'. Link: https://lkml.kernel.org/r/167526697917.433354.17779774988245113106.stgit@mhiramat.roam.corp.google.com Cc: Florent Revest <revest@chromium.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Will Deacon <will@kernel.org> Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Stable-dep-of:700b2b4397
("fprobe: Fix to ensure the number of active retprobes is not zero") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
0806cb1e6c
commit
f177a579d2
|
@ -14,6 +14,7 @@
|
|||
* @flags: The status flag.
|
||||
* @rethook: The rethook data structure. (internal data)
|
||||
* @entry_data_size: The private data storage size.
|
||||
* @nr_maxactive: The max number of active functions.
|
||||
* @entry_handler: The callback function for function entry.
|
||||
* @exit_handler: The callback function for function exit.
|
||||
*/
|
||||
|
@ -31,6 +32,7 @@ struct fprobe {
|
|||
unsigned int flags;
|
||||
struct rethook *rethook;
|
||||
size_t entry_data_size;
|
||||
int nr_maxactive;
|
||||
|
||||
void (*entry_handler)(struct fprobe *fp, unsigned long entry_ip,
|
||||
struct pt_regs *regs, void *entry_data);
|
||||
|
|
|
@ -143,7 +143,10 @@ static int fprobe_init_rethook(struct fprobe *fp, int num)
|
|||
}
|
||||
|
||||
/* Initialize rethook if needed */
|
||||
size = num * num_possible_cpus() * 2;
|
||||
if (fp->nr_maxactive)
|
||||
size = fp->nr_maxactive;
|
||||
else
|
||||
size = num * num_possible_cpus() * 2;
|
||||
if (size < 0)
|
||||
return -E2BIG;
|
||||
|
||||
|
|
Loading…
Reference in New Issue