From nobody Tue Jun 30 22:34:45 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4B693C433EF for ; Fri, 7 Jan 2022 04:50:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346106AbiAGEuJ (ORCPT ); Thu, 6 Jan 2022 23:50:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55600 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230171AbiAGEuH (ORCPT ); Thu, 6 Jan 2022 23:50:07 -0500 Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BF8BAC061245 for ; Thu, 6 Jan 2022 20:50:06 -0800 (PST) Received: by mail-pf1-x432.google.com with SMTP id u20so4205727pfi.12 for ; Thu, 06 Jan 2022 20:50:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7M0agZO+lyLM0cmi/dQO8IIauT68RhHPtTp/wUvdeTU=; b=K660Fchd15Re0IJ+t4+CH0h7J7DRmSSof5IbwMBUHh2SlgTw8JjsWecBDlTx7b0Kcn mwoR1sIedy4PQ3MF5AeaWuLnHPmU74EV9JbFg4TvaGja9zUWcH/8G0Ypifk8CHEpFuQb rTILS0empLicmO8PGBB36iOip/Gcxaibx72/icI5aSb8mTErFo/HLEaUTtam9BphiM/R Bs3At1XKhwTs7sAV3hsWgHFX5ZrbSzIZ2fjysSUxDTegAJslFcNVqQrhTPsOUo3LQYDH vh5n3bDnMZCZYqkbjO74W08pGcitfuxqpZ8pdXq7a0OuJP8CQBcfoZT2FRhewkDxGA2q HRbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7M0agZO+lyLM0cmi/dQO8IIauT68RhHPtTp/wUvdeTU=; b=hyXsck6wWAAsR2+aBdugbQAJpPbSqedO8Jy+SHe9a8ZlsZfJZMgEymKxpmwwaMC0TM KmWD/hTtgjUCbLuOxcnIrXBAvPshvT4ktH5YTU0hlfsQjaSkpv4xikCzd2iWCQzdocXU xma17VgkshTmfzgCedI7VVrUHPbcpkh0Uk8ANPR2u0Ds6kBgEMt+j3UMDRuPNak18jLP nzkdW2/w8rb/5b0tQi9t9ic0jU9SSNdf/01SMoD05I9jSDm225/rZEau8z06JqiTdqMd M/EX6yHhsAoZHoMgGf838cwP6uzcnUfr44rB+ADSGCQ0QULvU5lXNlalZxEt849i5nSv jJHg== X-Gm-Message-State: AOAM5309ttOwEREySrchg77aadLBX7wjVrF3IPO+itkICjtOLkNuSaB5 EKdJgJ4sxZY/kTPikB8b57KRHiLnHg== X-Google-Smtp-Source: ABdhPJx1F9vKClAdLMFO0ymrn2NFanwDIsA0jT5iAV6LUHI5o18CSdTJM5nW0oh/P9pRNYGsBfB0VQ== X-Received: by 2002:aa7:9155:0:b0:4bb:e7b7:73c3 with SMTP id 21-20020aa79155000000b004bbe7b773c3mr50892471pfi.62.1641531006108; Thu, 06 Jan 2022 20:50:06 -0800 (PST) Received: from piliu.users.ipa.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id lp6sm8456115pjb.55.2022.01.06.20.50.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jan 2022 20:50:05 -0800 (PST) From: Pingfan Liu To: linux-kernel@vger.kernel.org Cc: Pingfan Liu , Steven Rostedt , Ingo Molnar Subject: [PATCH 1/3] tracing/filter: degrade addr in filter_pred_string() from double pointer to pointer Date: Fri, 7 Jan 2022 12:49:49 +0800 Message-Id: <20220107044951.22080-2-kernelfans@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220107044951.22080-1-kernelfans@gmail.com> References: <20220107044951.22080-1-kernelfans@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Since FILTER_PTR_STRING has the type of "char *", it is meaningless to convert it to "char **". Hence degrading addr from double pointer to single. Signed-off-by: Pingfan Liu Cc: Steven Rostedt Cc: Ingo Molnar To: linux-kernel@vger.kernel.org --- kernel/trace/trace_events_filter.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events= _filter.c index c9124038b140..264456e1698f 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c @@ -670,11 +670,11 @@ static int filter_pred_string(struct filter_pred *pre= d, void *event) /* Filter predicate for char * pointers */ static int filter_pred_pchar(struct filter_pred *pred, void *event) { - char **addr =3D (char **)(event + pred->offset); + char *addr =3D (char *)(event + pred->offset); int cmp, match; - int len =3D strlen(*addr) + 1; /* including tailing '\0' */ + int len =3D strlen(addr) + 1; /* including tailing '\0' */ =20 - cmp =3D pred->regex.match(*addr, &pred->regex, len); + cmp =3D pred->regex.match(addr, &pred->regex, len); =20 match =3D cmp ^ pred->not; =20 --=20 2.31.1 From nobody Tue Jun 30 22:34:45 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 65266C433FE for ; Fri, 7 Jan 2022 04:50:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346127AbiAGEuM (ORCPT ); Thu, 6 Jan 2022 23:50:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55612 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346107AbiAGEuJ (ORCPT ); Thu, 6 Jan 2022 23:50:09 -0500 Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CF251C061245 for ; Thu, 6 Jan 2022 20:50:08 -0800 (PST) Received: by mail-pl1-x633.google.com with SMTP id n16so4048425plc.2 for ; Thu, 06 Jan 2022 20:50:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=G/9VHStJAOS0mkHmbdKCdZxSf+vxenwHMG2wsz94L4M=; b=EoAdNPxtd3we3NI1yswOuvVhFDyhLYQojzTSCoIkjuOEnmLSLuBXxNwPdspcxcGYjV ZkZ27oSdGSyWNo31oA88VTH8R0hX+S2fGaXdZgxDfz/RrgF8QMgEjg30M1oRosx5YVU2 lLG9ton/2d+ZBfjMZlymGTvceW1z2dZhccOWPihGqGH0iCJy0i/oRJDJv0R1nITeclrI /5loyiOXHAGi4/w2RO+YIG4oFyFwah/OZxH/H4YshxvJ0v0qfc8uyHj9BeCgAa5ewPYF 74/FBA7rrochhFp2ONp9VH8mQEXY7sRQInM5DykDKQQ9//Aj9qQxz9uu4cai7MNj4hLU 0Csg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=G/9VHStJAOS0mkHmbdKCdZxSf+vxenwHMG2wsz94L4M=; b=TO3He3fgcK5RtaclCzNMBP9kGF3eXPjFYjyts+lcQNbLFIxIpMYOY9BzhOpdOJYf8j Bkna0Sk+05k7K+XfWXn9jdrzvgtrifrvJ6P2sj1za2DaMZRnUfN6TWEgUoHWb7AiPpXt lA17sQL1mXwkumaXswYXXGOIB4ScDJQsYWUAAzjcL92d+mjno+qFpmzDK+qu74yuruBm gzQbmYmVSIKsnV2vOHvFQerwozJ+B1hOepj4fjmO/ExR6vQtWPnB3HvIs6aue5vaJBv1 NS/PTHlZoM3kdk7Y/QyD3/t4vuTj6VA157ozVRYZfvV1QxPszTTsps7AJqMv2vtADVKP PvoA== X-Gm-Message-State: AOAM531jl4uv8bNIyOXBBdwYYrPWIadb1BpOGgb/i7cqu9bRSN+uRad6 j/qMYNPwGsSy6IWFTd4EFLltJPLS9g== X-Google-Smtp-Source: ABdhPJyNMS8EBVFupw+B8UOrNWA6AGLP3wCfdHkJDXSMl6voXbiOsIDAhg8tXVWVA5RZ92M5/JQ17A== X-Received: by 2002:a17:90b:3b8e:: with SMTP id pc14mr13857864pjb.217.1641531008270; Thu, 06 Jan 2022 20:50:08 -0800 (PST) Received: from piliu.users.ipa.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id lp6sm8456115pjb.55.2022.01.06.20.50.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jan 2022 20:50:08 -0800 (PST) From: Pingfan Liu To: linux-kernel@vger.kernel.org Cc: Pingfan Liu , Steven Rostedt , Ingo Molnar Subject: [PATCH 2/3] tracing/filter: harden the prototype of predicate_parse() Date: Fri, 7 Jan 2022 12:49:50 +0800 Message-Id: <20220107044951.22080-3-kernelfans@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220107044951.22080-1-kernelfans@gmail.com> References: <20220107044951.22080-1-kernelfans@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Since the next patch badly relies on the struct 'trace_event_call' to pass in 'event_call_class info', making the involved functions' prototype stricter. There is no functional change in this patch. Signed-off-by: Pingfan Liu Cc: Steven Rostedt Cc: Ingo Molnar To: linux-kernel@vger.kernel.org --- kernel/trace/trace_events_filter.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events= _filter.c index 264456e1698f..2a05315127f9 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c @@ -136,7 +136,8 @@ static void parse_error(struct filter_parse_error *pe, = int err, int pos) pe->lasterr_pos =3D pos; } =20 -typedef int (*parse_pred_fn)(const char *str, void *data, int pos, +typedef int (*parse_pred_fn)(const char *str, struct trace_event_call *dat= a, + int pos, struct filter_parse_error *pe, struct filter_pred **pred); =20 @@ -408,7 +409,7 @@ enum { */ static struct prog_entry * predicate_parse(const char *str, int nr_parens, int nr_preds, - parse_pred_fn parse_pred, void *data, + parse_pred_fn parse_pred, struct trace_event_call *data, struct filter_parse_error *pe) { struct prog_entry *prog_stack; @@ -1149,7 +1150,7 @@ static filter_pred_fn_t select_comparison_fn(enum fil= ter_op_ids op, } =20 /* Called when a predicate is encountered by predicate_parse() */ -static int parse_pred(const char *str, void *data, +static int parse_pred(const char *str, struct trace_event_call *data, int pos, struct filter_parse_error *pe, struct filter_pred **pred_ptr) { --=20 2.31.1 From nobody Tue Jun 30 22:34:45 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D1222C433F5 for ; Fri, 7 Jan 2022 04:50:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346117AbiAGEuP (ORCPT ); Thu, 6 Jan 2022 23:50:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55622 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346115AbiAGEuL (ORCPT ); Thu, 6 Jan 2022 23:50:11 -0500 Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 23CECC061245 for ; Thu, 6 Jan 2022 20:50:11 -0800 (PST) Received: by mail-pg1-x532.google.com with SMTP id 200so4483761pgg.3 for ; Thu, 06 Jan 2022 20:50:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KYTEnCm6vjR29UvMkQ2hmvarpkcMAexSrfASlmBt0go=; b=fN62roF2eakvVGrEpE7LJ0/FwaGrYDkPdHHW386RRMsN4RMXv/oUGs74+KPpc1wSns mIH2Qjog3/h25kaPUoWAnqHi1HjSEfS2w27D7oSUY6fTTHJZqsLVURc8Zd0CeiHSZnmg aAQBcEwJoDrc9MMGu9m6/mcksnuaZroUGgDcuQjdc7th0RNulrpvjHqgyuQdRwF5yNlk UlUeHOBs2Vd+6/Yz5KRji3fiFTWWMxZfV7sotUBX2yPNqQwUDwgabDLk881/5vN4fY1b u5rJaUmpuJknj+z2vmyBbEp5YtpcRQ0MDD3gjpeqRqkyE8MBuRGms5kc2KIRasgeReur 8rOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KYTEnCm6vjR29UvMkQ2hmvarpkcMAexSrfASlmBt0go=; b=6r/FpDDV1MASTn7Kbb5bMrJXlK4XTjIIo5LVq3FxAYQsMu5WbZyqzotdwuBQoifGDb W5IcQU6X3xKsHo6hAU2KsiylhzopeHJVLSeuQpdXt4OqyA/WtzrbNMiifAL6bkY1/8fj 1aFlF8Xfdd3lagiG4i+qy9pCUCkkW8UnlRBb+bWcSIX8glHBBUxepX5PGZ4CXJjUEtzR mMMRKO7FnmaL1veBIBWbHhpdnGT+AmKVWhAOvTXxU/IKUV9KwB0MnJlK4emCZr6mKavU xw7yMAjnCSnmLlxMOGoUPRgHal1eEYznDrOQHViZ9faoFhS2hvT+4vAfiMSazIVZiJht Cc9Q== X-Gm-Message-State: AOAM5303tCTyAY15EX1JcCVqK2XFU+nGGvTB86Tqpi10vtBF8csmpp8R w3exZeZaOyGJFV0I+AK3z5rRkpyjhA== X-Google-Smtp-Source: ABdhPJx6aN1DuzUxFuThfk7K4UWCSI0QTBXl1J0BpF57AwS7y/+KDIEVDljDtdwfYdbl0gIVcdo9tg== X-Received: by 2002:a63:1346:: with SMTP id 6mr54425264pgt.147.1641531010502; Thu, 06 Jan 2022 20:50:10 -0800 (PST) Received: from piliu.users.ipa.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id lp6sm8456115pjb.55.2022.01.06.20.50.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jan 2022 20:50:10 -0800 (PST) From: Pingfan Liu To: linux-kernel@vger.kernel.org Cc: Pingfan Liu , Steven Rostedt , Ingo Molnar Subject: [PATCH 3/3] tracing/filter: make filter_pred_pchar() survive the access to user space Date: Fri, 7 Jan 2022 12:49:51 +0800 Message-Id: <20220107044951.22080-4-kernelfans@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220107044951.22080-1-kernelfans@gmail.com> References: <20220107044951.22080-1-kernelfans@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" When echo "filename ~ \"cpu\"" > events/syscalls/sys_enter_openat/filter echo 1 > events/syscalls/sys_enter_at/enable Then the following #PF is observed: kvm-03-guest16 login: [72198.026181] BUG: unable to handle page fault f= or address: 00007fffaae8ef60 [72198.027625] #PF: supervisor read access in kernel mode [72198.028627] #PF: error_code(0x0001) - permissions violation [72198.029708] PGD 80000001008b7067 P4D 80000001008b7067 PUD 2393f1067 = PMD 2393ec067 PTE 8000000108f47867 [72198.031588] Oops: 0001 [#1] PREEMPT SMP PTI [72198.032410] CPU: 1 PID: 1 Comm: systemd Kdump: loaded Not tainted 5.= 14.0-32.el9.x86_64 #1 [72198.034021] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011 [72198.035190] RIP: 0010:strlen+0x0/0x20 [72198.035914] Code: 48 89 f9 74 09 48 83 c1 01 80 39 00 75 f7 31 d2 44= 0f b6 04 16 44 88 04 11 48 83 c2 01 45 84 c0 75 ee c3 0f 1f 80 00 00 00 00= <80> 3f 00 74 10 48 89 f8 48 83 c0 01 80 38 00 75 f7 48 29 f8 c3 31 [72198.039576] RSP: 0018:ffffb5b900013e48 EFLAGS: 00010246 [72198.040593] RAX: 0000000000000018 RBX: ffff8fc1c49ede00 RCX: 0000000= 000000000 [72198.041991] RDX: 0000000000000020 RSI: ffff8fc1c02d601c RDI: 00007ff= faae8ef60 [72198.043419] RBP: 00007fffaae8ef60 R08: 0005034f4ddb8ea4 R09: 0000000= 000000000 [72198.044800] R10: ffff8fc1c02d601c R11: 0000000000000000 R12: ffff8fc= 1c8a6e380 [72198.046185] R13: 0000000000000000 R14: ffff8fc1c02d6010 R15: ffff8fc= 1c00453c0 [72198.047610] FS: 00007fa86123db40(0000) GS:ffff8fc2ffd00000(0000) kn= lGS:0000000000000000 [72198.049206] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [72198.050332] CR2: 00007fffaae8ef60 CR3: 0000000102880001 CR4: 0000000= 0007706e0 [72198.051760] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000= 000000000 [72198.053168] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000= 000000400 [72198.054550] PKRU: 55555554 [72198.055114] Call Trace: [72198.055616] filter_pred_pchar+0x18/0x40 [72198.056421] filter_match_preds+0x31/0x70 [72198.057210] ftrace_syscall_enter+0x27a/0x2c0 [72198.058088] syscall_trace_enter.constprop.0+0x1aa/0x1d0 [72198.059163] do_syscall_64+0x16/0x90 [72198.059898] entry_SYSCALL_64_after_hwframe+0x44/0xae [72198.060904] RIP: 0033:0x7fa861d88664 Apparently, it is caused by supervisor read access in kernel mode. To tackle this issue caused by event_class_syscall_enter, using the pair of user_access_{begin/end}() may be an efficient method, but it means to stir up _ASM_EXTABLE. Hence this patch picks up the road of copy_from_user(). This is achieved by introducing a field 'uaccess' in ftrace_event_field, and run regex.match on the copied buffer. Signed-off-by: Pingfan Liu Cc: Steven Rostedt Cc: Ingo Molnar To: linux-kernel@vger.kernel.org Reported-by: Pingfan Liu Reported-by: kernel test robot --- kernel/trace/trace.h | 1 + kernel/trace/trace_events_filter.c | 29 ++++++++++++++++++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 38715aa6cfdf..81a263a060e8 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -1281,6 +1281,7 @@ struct ftrace_event_field { int offset; int size; int is_signed; + int uaccess; }; =20 struct prog_entry; diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events= _filter.c index 2a05315127f9..9af268b98c61 100644 --- a/kernel/trace/trace_events_filter.c +++ b/kernel/trace/trace_events_filter.c @@ -10,6 +10,7 @@ #include #include #include +#include =20 #include "trace.h" #include "trace_output.h" @@ -672,12 +673,30 @@ static int filter_pred_string(struct filter_pred *pre= d, void *event) static int filter_pred_pchar(struct filter_pred *pred, void *event) { char *addr =3D (char *)(event + pred->offset); + char *udata, *cmp_buff; int cmp, match; - int len =3D strlen(addr) + 1; /* including tailing '\0' */ + int len, poffset; + + if (unlikely(pred->field->uaccess)) { + udata =3D kmalloc(PAGE_SIZE, GFP_KERNEL); + if (!udata) + return -ENOMEM; + poffset =3D (ulong)addr & (PAGE_SIZE - 1); + cmp_buff =3D udata + poffset; + if (copy_from_user(cmp_buff, addr, PAGE_SIZE - poffset)) { + kfree(udata); + return -EFAULT; + } + } else { + cmp_buff =3D addr; + } + len =3D strlen(cmp_buff) + 1; /* including tailing '\0' */ =20 - cmp =3D pred->regex.match(addr, &pred->regex, len); + cmp =3D pred->regex.match(cmp_buff, &pred->regex, len); =20 match =3D cmp ^ pred->not; + if (unlikely(pred->field->uaccess)) + kfree(udata); =20 return match; } @@ -1220,6 +1239,7 @@ static int parse_pred(const char *str, struct trace_e= vent_call *data, return -ENOMEM; =20 pred->field =3D field; + field->uaccess =3D 0; pred->offset =3D field->offset; pred->op =3D op; =20 @@ -1321,8 +1341,11 @@ static int parse_pred(const char *str, struct trace_= event_call *data, =20 } else if (field->filter_type =3D=3D FILTER_DYN_STRING) pred->fn =3D filter_pred_strloc; - else + else { pred->fn =3D filter_pred_pchar; + if (data->class =3D=3D &event_class_syscall_enter) + pred->field->uaccess =3D 1; + } /* go past the last quote */ i++; =20 --=20 2.31.1