@@ -858,6 +858,7 @@ struct uprobe_cpu_buffer {
858858};
859859static  struct  uprobe_cpu_buffer  __percpu  * uprobe_cpu_buffer ;
860860static  int  uprobe_buffer_refcnt ;
861+ #define  MAX_UCB_BUFFER_SIZE  PAGE_SIZE
861862
862863static  int  uprobe_buffer_init (void )
863864{
@@ -958,9 +959,6 @@ static void __uprobe_trace_func(struct trace_uprobe *tu,
958959
959960	WARN_ON (call  !=  trace_file -> event_call );
960961
961- 	if  (WARN_ON_ONCE (tu -> tp .size  +  dsize  >  PAGE_SIZE ))
962- 		return ;
963- 
964962	if  (trace_trigger_soft_disabled (trace_file ))
965963		return ;
966964
@@ -1503,6 +1501,11 @@ static int uprobe_dispatcher(struct uprobe_consumer *con, struct pt_regs *regs)
15031501	esize  =  SIZEOF_TRACE_ENTRY (is_ret_probe (tu ));
15041502
15051503	ucb  =  uprobe_buffer_get ();
1504+ 
1505+ 	if  (WARN_ON_ONCE (tu -> tp .size  +  dsize  >  MAX_UCB_BUFFER_SIZE )) {
1506+ 		dsize  =  MAX_UCB_BUFFER_SIZE  -  tu -> tp .size ;
1507+ 	}
1508+ 
15061509	store_trace_args (ucb -> buf , & tu -> tp , regs , esize , dsize );
15071510
15081511	if  (trace_probe_test_flag (& tu -> tp , TP_FLAG_TRACE ))
@@ -1538,6 +1541,11 @@ static int uretprobe_dispatcher(struct uprobe_consumer *con,
15381541	esize  =  SIZEOF_TRACE_ENTRY (is_ret_probe (tu ));
15391542
15401543	ucb  =  uprobe_buffer_get ();
1544+ 
1545+ 	if  (WARN_ON_ONCE (tu -> tp .size  +  dsize  >  MAX_UCB_BUFFER_SIZE )) {
1546+ 		dsize  =  MAX_UCB_BUFFER_SIZE  -  tu -> tp .size ;
1547+ 	}
1548+ 
15411549	store_trace_args (ucb -> buf , & tu -> tp , regs , esize , dsize );
15421550
15431551	if  (trace_probe_test_flag (& tu -> tp , TP_FLAG_TRACE ))
0 commit comments