Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2548739lqp; Mon, 25 Mar 2024 02:08:37 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCX1WRw3qKdPN4x6aH0i9TuB4F9hdbnAOcT9yIHdv8x4QTpXGm33Jh0K5rOgRKHuW+neE9EGJDBHwhAQQGuyKiBHaZNP2GV1GRW+TfqTuQ== X-Google-Smtp-Source: AGHT+IFlcZIciCUuoEBgYH1clvO3zPVS+RP4AuEIVpHcKcXTuGD3fnCv6OJiO3VtWaizQWoZo/aA X-Received: by 2002:a05:6808:2382:b0:3c3:d495:2346 with SMTP id bp2-20020a056808238200b003c3d4952346mr253274oib.7.1711357716960; Mon, 25 Mar 2024 02:08:36 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711357716; cv=pass; d=google.com; s=arc-20160816; b=gRN70CH73dk6p7bUyJDC2iRGpCrPVVaahS9QR+kB8g31/ykYETDUakzuqby01E8qxK Y/uX2c2AMQafUg3mPSFvV01s3ARSuOuoJjX8PFWgfSn855hDir+FOVdvyd3nRIr/3HVs lRLiEAlMaBF7YYrwoFuLe0hy2Whme0/tq9fqxLwfevQKiM1colqxuO3+iHaJJkEABJwV kwL5OBqlFZwf/fKf3/tkCOK5aohZrQTyZWll6nR5d+bLm7F8zA1HbWVP/NZc1SBgJoXg fiH0D/g3yvquH8LS0EpD/T9CyAnE8KJS0UetZWxEP1DKaZCRGtJvQdAJiktA5tklcAtS SE6g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=d93Iq979C00Cm0nW9rrP/eD0YsyGTG7ZcwWQ/HG1W4g=; fh=bMNKZ7ybmBmtJ9ZN0DsIraF1RdLwlTOItTNQ9utm064=; b=w376LBZdnW3W6QXe+bq38OM8olOaz8A9WImbhHyPKttSebHXhBjpBFK2+xdOBcwfkH QoBsW0fTDhFmRkL4EpHZ7VQ7nf6zdhzWIrEZHMuTSZEsNvUNXOKYPKycVlv+hjs5MonY +Ard01T1kt1upz6oMC6tpEvhFkVdXS+oMGRjFYBHgqvGDugAoJgGxeKNu6zEbSAr7ufh iZHlIaqS7zp9btB7+nNE65jkLmwTaIc8O9SHSOj5kpd8PiL7WS0y4ESEw6ZIC+UR4A2P JvoIf+zYBQUvVwBx9DGpu3njFxRI0h9AXMxqqzqa1IqoqBeS5YZxpXHxZywbKCn5kvct ET7A==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=nRQ2ozjt; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-115698-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-115698-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id fc9-20020a05622a488900b0043130210d3fsi5213729qtb.249.2024.03.25.02.08.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 02:08:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-115698-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=nRQ2ozjt; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-115698-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-115698-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id AA25E1C30806 for ; Mon, 25 Mar 2024 09:08:36 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 33C3025A1D4; Mon, 25 Mar 2024 02:54:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="nRQ2ozjt" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EDF6420F23B; Sun, 24 Mar 2024 23:07:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711321678; cv=none; b=Xmebx4c96PrvlxRbXMnijmxuR0KvUVQYr9xz9vKxBqCe7MV06sAFDgWbxLJTtXasABvu5p4oaNsNKsJSCPcZGwrBXtAj5Yn6XVJe0uJUVklV6IZLFFYl9YkBAaTcEXRu6qZmwCyyuotSM4FE/pNR3MmLDmTaTngYoU2OaYE6pmo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711321678; c=relaxed/simple; bh=h8BdH7BljQ0FdEXcZo6/KF7jYRa7kna71QzsImwJywI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Eko83aOLUJb+2Ka/Z+HET9LXRipjkNG8zoXA3kKxYitnKLx9C15FY39/qUWuW23iJDxFKhbW5EuCjIrcVFjXTXw6h8wQbnrzSrEdsLCKTXkJbtS0f5FOQJC52cE1Hl/XWBdD1AuazWNUaCRZFpqUkjZq/zzPJLXyHipoGMXNlHM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nRQ2ozjt; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 39ACEC43394; Sun, 24 Mar 2024 23:07:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711321677; bh=h8BdH7BljQ0FdEXcZo6/KF7jYRa7kna71QzsImwJywI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nRQ2ozjtqB90JWZklGYpCbRG0JVs0PiSVevyhCXKR19vlsCW6YfiyvlXlt5Z2jmuX I95Y31aij7IAA6XhpTfgRzfF5B+dOo7xbXY+NSxTOzK1P4GobQSQ+zR9AAT5ZElH9K gGY5YPuEdzUQNqK+O/sBNmBaNLydUSnFR47ONNSWpISS5quZZXKr22PbbDGQ4/HHnx nl1QPsAKhjTnlaZHm9iw9zoUqIxKVOPr8MXUnxgXAq/6sQdtWGra9dkVlqed1yTZ97 fFsRvRIyIvyrKDhoKuZSeT54QJ3FGlkszwfw2fTGTxfTyHelFXNODS5h2BPKwMKZ/D WDDNWgZKVhyUQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Takashi Iwai , Arnd Bergmann , Sasha Levin Subject: [PATCH 6.6 407/638] ALSA: seq: fix function cast warnings Date: Sun, 24 Mar 2024 18:57:24 -0400 Message-ID: <20240324230116.1348576-408-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240324230116.1348576-1-sashal@kernel.org> References: <20240324230116.1348576-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit From: Takashi Iwai [ Upstream commit d7bf73809849463f76de42aad62c850305dd6c5d ] clang-16 points out a control flow integrity (kcfi) issue when event callbacks get converted to incompatible types: sound/core/seq/seq_midi.c:135:30: error: cast from 'int (*)(struct snd_rawmidi_substream *, const char *, int)' to 'snd_seq_dump_func_t' (aka 'int (*)(void *, void *, int)') converts to incompatible function type [-Werror,-Wcast-function-type-strict] 135 | snd_seq_dump_var_event(ev, (snd_seq_dump_func_t)dump_midi, substream); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sound/core/seq/seq_virmidi.c:83:31: error: cast from 'int (*)(struct snd_rawmidi_substream *, const unsigned char *, int)' to 'snd_seq_dump_func_t' (aka 'int (*)(void *, void *, int)') converts to incompatible function type [-Werror,-Wcast-function-type-strict] 83 | snd_seq_dump_var_event(ev, (snd_seq_dump_func_t)snd_rawmidi_receive, vmidi->substream); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For addressing those errors, introduce wrapper functions that are used for callbacks and bridge to the actual function call with pointer cast. The code was originally added with the initial ALSA merge in linux-2.5.4. [ the patch description shamelessly copied from Arnd's original patch -- tiwai ] Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Reported-by: Arnd Bergmann Link: https://lore.kernel.org/r/20240213101020.459183-1-arnd@kernel.org Link: https://lore.kernel.org/r/20240213135343.16411-1-tiwai@suse.de Signed-off-by: Takashi Iwai Signed-off-by: Sasha Levin --- sound/core/seq/seq_midi.c | 8 +++++++- sound/core/seq/seq_virmidi.c | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/sound/core/seq/seq_midi.c b/sound/core/seq/seq_midi.c index 18320a248aa7d..78dcb0ea15582 100644 --- a/sound/core/seq/seq_midi.c +++ b/sound/core/seq/seq_midi.c @@ -113,6 +113,12 @@ static int dump_midi(struct snd_rawmidi_substream *substream, const char *buf, i return 0; } +/* callback for snd_seq_dump_var_event(), bridging to dump_midi() */ +static int __dump_midi(void *ptr, void *buf, int count) +{ + return dump_midi(ptr, buf, count); +} + static int event_process_midi(struct snd_seq_event *ev, int direct, void *private_data, int atomic, int hop) { @@ -132,7 +138,7 @@ static int event_process_midi(struct snd_seq_event *ev, int direct, pr_debug("ALSA: seq_midi: invalid sysex event flags = 0x%x\n", ev->flags); return 0; } - snd_seq_dump_var_event(ev, (snd_seq_dump_func_t)dump_midi, substream); + snd_seq_dump_var_event(ev, __dump_midi, substream); snd_midi_event_reset_decode(msynth->parser); } else { if (msynth->parser == NULL) diff --git a/sound/core/seq/seq_virmidi.c b/sound/core/seq/seq_virmidi.c index 1b9260108e482..1678737f11be7 100644 --- a/sound/core/seq/seq_virmidi.c +++ b/sound/core/seq/seq_virmidi.c @@ -62,6 +62,13 @@ static void snd_virmidi_init_event(struct snd_virmidi *vmidi, /* * decode input event and put to read buffer of each opened file */ + +/* callback for snd_seq_dump_var_event(), bridging to snd_rawmidi_receive() */ +static int dump_to_rawmidi(void *ptr, void *buf, int count) +{ + return snd_rawmidi_receive(ptr, buf, count); +} + static int snd_virmidi_dev_receive_event(struct snd_virmidi_dev *rdev, struct snd_seq_event *ev, bool atomic) @@ -80,7 +87,7 @@ static int snd_virmidi_dev_receive_event(struct snd_virmidi_dev *rdev, if (ev->type == SNDRV_SEQ_EVENT_SYSEX) { if ((ev->flags & SNDRV_SEQ_EVENT_LENGTH_MASK) != SNDRV_SEQ_EVENT_LENGTH_VARIABLE) continue; - snd_seq_dump_var_event(ev, (snd_seq_dump_func_t)snd_rawmidi_receive, vmidi->substream); + snd_seq_dump_var_event(ev, dump_to_rawmidi, vmidi->substream); snd_midi_event_reset_decode(vmidi->parser); } else { len = snd_midi_event_decode(vmidi->parser, msg, sizeof(msg), ev); -- 2.43.0