рдПрдХ рддреНрд╡рд░рд┐рдд рд╕реБрдзрд╛рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕реНрдкреЗрдХреНрдЯрд░ рднреЗрджреНрдпрддрд╛ рдХрд╛ рдЕрдзреВрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реБрдЖ

рдЧреНрд░рд╛рд╕рд┐рдХреНрдпреЙрд░рд┐рдЯреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рд╛рдЭрд╛ рдПрдХ рд╕рд╛рд╡рдзрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд╣рд╛рдиреА рдЬреЛ рджрд░реНрд╢рд╛рддреА рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдмрд┐рдирд╛ рд╕реЛрдЪреЗ-рд╕рдордЭреЗ рд╕рдВрдХрд▓рдХ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдХреЛрдб рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпрд╛рдБ рдкреИрджрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдордИ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдкреАрдЯреНрд░реЗрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдкреЗрдХреНрдЯрд░ рднреЗрджреНрдпрддрд╛ рдХреЗ рд╢реЛрд╖рдг рдХреЗ рдПрдХ рдирдП рд╡реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкреИрдЪ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛрдб рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдорд┐рд╢реНрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдХреЛрдб рдХреЗ рдмрд╛рдж рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореМрдЬреВрджрд╛ рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛):

рдкреВрд░реНрдгрд╛рдВрдХ рд╕реВрдЪрдХрд╛рдВрдХ = рдПрди;
рдпрджрд┐ (n < HBP_NUM) { рд╕реВрдЪрдХрд╛рдВрдХ = array_index_nospec(рд╕реВрдЪрдХрд╛рдВрдХ, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];

рд▓рд┐рдирд╕ рдиреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рднреВрд▓ рд╕реБрдзрд╛рд░ рдЖрдкрдХреА рдореБрдЦреНрдп рд╢рд╛рдЦрд╛ рдХреЛ, рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓рд┐рдпрд╛ рд╣реИ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ if рдмреНрд▓реЙрдХ рдореЗрдВ рд▓реЗ рдЬрд╛рдХрд░ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ:

рдпрджрд┐ (рдПрди < рдПрдЪрдмреАрдкреА_рдПрдирдпреВрдПрдо) {рдЗрдВрдЯ рдЗрдВрдбреЗрдХреНрд╕ = рдПрд░реЗ_рдЗрдВрдбреЗрдХреНрд╕_рдиреЛрд╕реНрдкреЗрдХ(рдПрди, рдПрдЪрдмреАрдкреА_рдПрдирдпреВрдПрдо); struct perf_event *bp = thread->ptrace_bps[index];

рдЬреБрд▓рд╛рдИ рдореЗрдВ, рдлрд┐рдХреНрд╕ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░реНрдиреЗрд▓ рд╢рд╛рдЦрд╛рдУрдВ 4.4, 4.9, 4.14, 4.19 рдФрд░ 5.2 рдореЗрдВ рднреА рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реНрдерд┐рд░ рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рднреА рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд▓рд┐рдиреБрд╕ рдХреА рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реНрд╡рдпрдВ рд╣реА рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реЛрдЪреЗ рдмрд┐рдирд╛, рд╡реЗ рдмрд╕ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛, рддрд╛рдХрд┐ array_index_nospec рдкрд░ рдХреЙрд▓, рдЬреЛ рд╕реАрдзреЗ рднреЗрджреНрдпрддрд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдЕрдм рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡реЗрд░рд┐рдПрдмрд▓ "рдЗрдВрдбреЗрдХреНрд╕" рдХреЗ рдмрдЬрд╛рдп рд╡реЗрд░рд┐рдПрдмрд▓ "рдПрди" рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдкреВрд░реНрдгрд╛рдВрдХ рд╕реВрдЪрдХрд╛рдВрдХ = рдПрди;
рдпрджрд┐ (n <HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[index];
рд╕реВрдЪрдХрд╛рдВрдХ = array_index_nospec(рд╕реВрдЪрдХрд╛рдВрдХ, HBP_NUM);

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ