Received: by 2002:a05:7412:31a9:b0:e2:908c:2ebd with SMTP id et41csp3639599rdb; Wed, 13 Sep 2023 19:58:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG/++CLjr0wdvw10T9C0O+xFqmHH/NojKdU7tq95mltrsqwJsHdHB2WgLlBsb6EvuacVjpF X-Received: by 2002:a05:6358:f14:b0:134:c407:681f with SMTP id b20-20020a0563580f1400b00134c407681fmr3647328rwj.1.1694660336055; Wed, 13 Sep 2023 19:58:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694660336; cv=none; d=google.com; s=arc-20160816; b=RjWb/tk31RwmW2fexzGaV9BKRgNLOpq0t79hQes50gdmtBVsvijGpG5oxDrg6nCGnz BfRho2tUaOTtTIbPMliF4WAcre85gCuUgwYM/UbldefB0uI/MUtURm/8pA/PrfdNgNGP qPy1HNeBQQTYXMPXM2z/AoZIUWAHdN3otzUnzDviXvs99UfsrX+WyN24UhsJ/RDHUxv1 p67X0qMBLxmq/khz38ggvIr6aSKT45Vlf7HUejaW287igP5olzJIJF9LwCKIy/0OqMib IUkunZTwNPXkyfVOiIo/Xcv9m8w1ocidKxPn+vxLEBrGN4/s+gT9J62jL8pxz03uGSsr 35yw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=o3ASYzXFzhwX08HgFkmYe9aO+tH16Bmrn4RY01FcRdU=; fh=wDmW3MygM6z458EHrOQ+wgmpjHiSULaiIug1BUWvUok=; b=0HV+VS3+ytUBqpUK0d+JqPZi/+w1E14mb1vYUc6K7IcIgkcw8Tz1aDEteTFORFT4Tt 3EjZ+mftNJi8UJlPJqlKoA+3vYoo2/AnxnwcuhdGLYHt7g8KvYxsJx2OCZKFKPLKPftj OqjEUiOSyAswRoXoxgANXH7UwQw07dz2NwL0R6xrCtviV1KLqlYoPZ/QOPF57ryIUqoI 1rcXJYH4cxmI/9B/frksffD7aXWwzZwWq1qpqHYtSVN6TCsTGcz0oSWjDhYzvejzWgu5 u1Bico8OkrZgtxQZbcLGUrLzcHI+0ygrRMVPFVdinBvm5+NRi+hxyq0v3pZ8IxxksyRJ C1sA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=ogeVexAU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id w14-20020a63b74e000000b005775a3ebf0asi519751pgt.67.2023.09.13.19.58.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Sep 2023 19:58:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=ogeVexAU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 41BEA8131ABD; Wed, 13 Sep 2023 14:58:00 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232885AbjIMV6B (ORCPT + 99 others); Wed, 13 Sep 2023 17:58:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41640 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232876AbjIMV6A (ORCPT ); Wed, 13 Sep 2023 17:58:00 -0400 Received: from mail-ot1-x32f.google.com (mail-ot1-x32f.google.com [IPv6:2607:f8b0:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5DB84173A for ; Wed, 13 Sep 2023 14:57:56 -0700 (PDT) Received: by mail-ot1-x32f.google.com with SMTP id 46e09a7af769-6c0f2addaefso178611a34.2 for ; Wed, 13 Sep 2023 14:57:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1694642275; x=1695247075; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=o3ASYzXFzhwX08HgFkmYe9aO+tH16Bmrn4RY01FcRdU=; b=ogeVexAUab82Iv/OXS3pJo/KxowzrUoejbi335L1SyjP9wtuVM5t2zW3G5hszIx++G XWoh2KRoqXGO5eMQquwhaiHVsnvQkTLojZXXtnPlEfAA044kaRnIuJIrwQOuO363vz/S D3OQYa5+BqUCf8IcncWcfRL3WHZSyOPbE02T4POYQGziS04ZuyWVIu/vs+0BoV6Bnc8O A0m1yz4vR2noCK7LftF2QFCKCSgMOry37ksRpUBliRXmDi3F7b0EtCZZxJHywoymQoqp IdzJVdkXJHCni/gRaYqsu2o5EZrKZAjiH08DIG/xVJKmw2YBAsQt2OarilV1+t9sjlNr Flyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694642275; x=1695247075; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=o3ASYzXFzhwX08HgFkmYe9aO+tH16Bmrn4RY01FcRdU=; b=o1+3n0LrzHdcq83Dnvu88ROJ0alIvQ9osDsib/qUMdlAIOMrdh+XqVmX8ZDmbhsIPd ALn1IB8HqrHDz2PHLH6OtxcF/0Bb9msD0OU/WO1bXZfTyFMjIXVwvb2KGm9pVfkWClfi 8B2hwowhO+5HEN3f8PaFu+SqCUpAnduiw72T6e23dS3d3uE6Z2Y/XtEeAuMGAPE31yk9 3NnCDh88BIP7NByEO2o17TgNb/9GDe1Q0jxgR6bG2FVJQ54+Oh1dCHUtgu4w7GUL5pWJ BXp76syhahLGjZLaeQAYwXM5rats4vBnh7BAdqQemlT7Sch0bXPZ88E6wq0qXeWvPOGr EAdA== X-Gm-Message-State: AOJu0YzSFboabUHZEMHivDYl36OjPhti0x2evW77Jqkpzpoh534wH8Lu woM1l9EXtO2iV2ad9Xg24K9LjQ== X-Received: by 2002:a9d:7d8a:0:b0:6be:fd51:cb6d with SMTP id j10-20020a9d7d8a000000b006befd51cb6dmr4346463otn.31.1694642275587; Wed, 13 Sep 2023 14:57:55 -0700 (PDT) Received: from google.com (26.103.132.34.bc.googleusercontent.com. [34.132.103.26]) by smtp.gmail.com with ESMTPSA id t24-20020a02ab98000000b004312e5c9b0dsm26436jan.139.2023.09.13.14.57.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Sep 2023 14:57:54 -0700 (PDT) Date: Wed, 13 Sep 2023 21:57:52 +0000 From: Justin Stitt To: Nathan Chancellor Cc: kent.overstreet@linux.dev, bfoster@redhat.com, linux-bcachefs@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, patches@lists.linux.dev Subject: Re: [PATCH 5/7] bcachefs: Fix -Wincompatible-function-pointer-types-strict from key_invalid callbacks Message-ID: <20230913215752.dj3jbeth3j6f7udc@google.com> References: <20230912-bcachefs-warning-fixes-v1-0-a1cc83a38836@kernel.org> <20230912-bcachefs-warning-fixes-v1-5-a1cc83a38836@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230912-bcachefs-warning-fixes-v1-5-a1cc83a38836@kernel.org> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 13 Sep 2023 14:58:00 -0700 (PDT) On Tue, Sep 12, 2023 at 12:15:42PM -0700, Nathan Chancellor wrote: > When building bcachefs with -Wincompatible-function-pointer-types-strict, > a clang warning designed to catch issues with mismatched function > pointer types, which will be fatal at runtime due to kernel Control Flow > Integrity (kCFI), there are several instances along the lines of: > > fs/bcachefs/bkey_methods.c:118:2: error: incompatible function pointer types initializing 'int (*)(const struct bch_fs *, struct bkey_s_c, enum bkey_invalid_flags, struct printbuf *)' with an expression of type 'int (const struct bch_fs *, struct bkey_s_c, unsigned int, struct printbuf *)' [-Werror,-Wincompatible-function-pointer-types-strict] > 118 | BCH_BKEY_TYPES() > | ^~~~~~~~~~~~~~~~ > fs/bcachefs/bcachefs_format.h:342:2: note: expanded from macro 'BCH_BKEY_TYPES' > 342 | x(deleted, 0) \ > | ^~~~~~~~~~~~~~~~~~~~~~~~~~ > fs/bcachefs/bkey_methods.c:117:41: note: expanded from macro 'x' > 117 | #define x(name, nr) [KEY_TYPE_##name] = bch2_bkey_ops_##name, > | ^~~~~~~~~~~~~~~~~~~~ > :206:1: note: expanded from here > 206 | bch2_bkey_ops_deleted > | ^~~~~~~~~~~~~~~~~~~~~ > fs/bcachefs/bkey_methods.c:34:17: note: expanded from macro 'bch2_bkey_ops_deleted' > 34 | .key_invalid = deleted_key_invalid, \ > | ^~~~~~~~~~~~~~~~~~~ > > The flags parameter should be of type 'enum bkey_invalid_flags', not > 'unsigned int'. Adjust the type everywhere so that there is no more > warning. > > Signed-off-by: Nathan Chancellor Reviewed-by: Justin Stitt > --- > fs/bcachefs/bkey_methods.c | 10 +++++----- > fs/bcachefs/subvolume.c | 2 +- > fs/bcachefs/subvolume.h | 2 +- > 3 files changed, 7 insertions(+), 7 deletions(-) > > diff --git a/fs/bcachefs/bkey_methods.c b/fs/bcachefs/bkey_methods.c > index 6547142db428..2a284c954c7a 100644 > --- a/fs/bcachefs/bkey_methods.c > +++ b/fs/bcachefs/bkey_methods.c > @@ -25,7 +25,7 @@ const char * const bch2_bkey_types[] = { > }; > > static int deleted_key_invalid(const struct bch_fs *c, struct bkey_s_c k, > - unsigned flags, struct printbuf *err) > + enum bkey_invalid_flags flags, struct printbuf *err) > { > return 0; > } > @@ -39,7 +39,7 @@ static int deleted_key_invalid(const struct bch_fs *c, struct bkey_s_c k, > }) > > static int empty_val_key_invalid(const struct bch_fs *c, struct bkey_s_c k, > - unsigned flags, struct printbuf *err) > + enum bkey_invalid_flags flags, struct printbuf *err) > { > if (bkey_val_bytes(k.k)) { > prt_printf(err, "incorrect value size (%zu != 0)", > @@ -55,7 +55,7 @@ static int empty_val_key_invalid(const struct bch_fs *c, struct bkey_s_c k, > }) > > static int key_type_cookie_invalid(const struct bch_fs *c, struct bkey_s_c k, > - unsigned flags, struct printbuf *err) > + enum bkey_invalid_flags flags, struct printbuf *err) > { > return 0; > } > @@ -70,7 +70,7 @@ static int key_type_cookie_invalid(const struct bch_fs *c, struct bkey_s_c k, > }) > > static int key_type_inline_data_invalid(const struct bch_fs *c, struct bkey_s_c k, > - unsigned flags, struct printbuf *err) > + enum bkey_invalid_flags flags, struct printbuf *err) > { > return 0; > } > @@ -91,7 +91,7 @@ static void key_type_inline_data_to_text(struct printbuf *out, struct bch_fs *c, > }) > > static int key_type_set_invalid(const struct bch_fs *c, struct bkey_s_c k, > - unsigned flags, struct printbuf *err) > + enum bkey_invalid_flags flags, struct printbuf *err) > { > if (bkey_val_bytes(k.k)) { > prt_printf(err, "incorrect value size (%zu != %zu)", > diff --git a/fs/bcachefs/subvolume.c b/fs/bcachefs/subvolume.c > index 0214a98deb4f..b371a5c4e06e 100644 > --- a/fs/bcachefs/subvolume.c > +++ b/fs/bcachefs/subvolume.c > @@ -99,7 +99,7 @@ int bch2_check_subvols(struct bch_fs *c) > /* Subvolumes: */ > > int bch2_subvolume_invalid(const struct bch_fs *c, struct bkey_s_c k, > - unsigned flags, struct printbuf *err) > + enum bkey_invalid_flags flags, struct printbuf *err) > { > if (bkey_lt(k.k->p, SUBVOL_POS_MIN) || > bkey_gt(k.k->p, SUBVOL_POS_MAX)) { > diff --git a/fs/bcachefs/subvolume.h b/fs/bcachefs/subvolume.h > index 8d4c50f4cd05..bb14f92e8687 100644 > --- a/fs/bcachefs/subvolume.h > +++ b/fs/bcachefs/subvolume.h > @@ -10,7 +10,7 @@ enum bkey_invalid_flags; > int bch2_check_subvols(struct bch_fs *); > > int bch2_subvolume_invalid(const struct bch_fs *, struct bkey_s_c, > - unsigned, struct printbuf *); > + enum bkey_invalid_flags, struct printbuf *); > void bch2_subvolume_to_text(struct printbuf *, struct bch_fs *, struct bkey_s_c); > > #define bch2_bkey_ops_subvolume ((struct bkey_ops) { \ > > -- > 2.42.0 >