mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
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:
committed by
Greg Kroah-Hartman
parent
0806cb1e6c
commit
f177a579d2
@@ -14,6 +14,7 @@
|
|||||||
* @flags: The status flag.
|
* @flags: The status flag.
|
||||||
* @rethook: The rethook data structure. (internal data)
|
* @rethook: The rethook data structure. (internal data)
|
||||||
* @entry_data_size: The private data storage size.
|
* @entry_data_size: The private data storage size.
|
||||||
|
* @nr_maxactive: The max number of active functions.
|
||||||
* @entry_handler: The callback function for function entry.
|
* @entry_handler: The callback function for function entry.
|
||||||
* @exit_handler: The callback function for function exit.
|
* @exit_handler: The callback function for function exit.
|
||||||
*/
|
*/
|
||||||
@@ -31,6 +32,7 @@ struct fprobe {
|
|||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
struct rethook *rethook;
|
struct rethook *rethook;
|
||||||
size_t entry_data_size;
|
size_t entry_data_size;
|
||||||
|
int nr_maxactive;
|
||||||
|
|
||||||
void (*entry_handler)(struct fprobe *fp, unsigned long entry_ip,
|
void (*entry_handler)(struct fprobe *fp, unsigned long entry_ip,
|
||||||
struct pt_regs *regs, void *entry_data);
|
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 */
|
/* 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)
|
if (size < 0)
|
||||||
return -E2BIG;
|
return -E2BIG;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user