Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2505019lqp; Mon, 25 Mar 2024 00:07:42 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVMLIRrU0rQ8KmSAm7sFQ+bGnLH1hFZYGU2s3cc9QpDcL59+VZmx0rRrCRn+tqGbSHOdJt1r/Tx/uROyG6BFMlhM//PpIPiIu4GTw7VXQ== X-Google-Smtp-Source: AGHT+IHXljqS+P/PQkhox0m/dAN8EuU4yNgrAIf358d76QcdjiP6/ceZJ5Ng4qTmh7o9x7xZ/l0U X-Received: by 2002:a50:9b19:0:b0:56c:d48:ac27 with SMTP id o25-20020a509b19000000b0056c0d48ac27mr1418152edi.7.1711350462241; Mon, 25 Mar 2024 00:07:42 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711350462; cv=pass; d=google.com; s=arc-20160816; b=TL/KHH2I8fOyFRdph84hGN/DKMDC84oWlNszRRHeRAMGjcal/m4IjvZLMnj1fKryaJ 4Mt1xJdkomnKSg4BhjHLcCFAp3BBnkB5FDZbBfc+qyUKgeklElwzcuQvf9oue9Zh5wZF y7Q0hsvtjNwz1/2+sbYvR1GxCO59p4WKyraQVeHMcubFsXN0+buAueBJjt5yo0O6KCd4 fhPCVyfmpNZfPp8FE4Z3XiEJOSgFJDKOlNm2XnrD37xMLKxViQ5uZSAk1cP1xwtI50oO iIufqk3bjWP9/LmtGSqfYj+9sq6ea+GA6+tHrRUnsw2JOK6st04jc0PZ017jilwIrXPm NzFg== 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=bEf8su/19wbvdgqksWf/1EXAGUvsSyceYmEWNSPxWmY=; fh=lOyx5AzavUiVcpxmMVfcSQxzdUcu4fk1ggU5J5TNGiA=; b=AiN99w8PHtYRqU7/Ovo8AeT01RQbKGgYt8fiG4YYYm4X0rEvV9eIB/OiZGi6Ay0Wfz +JxM2J2NEuRO1ZGMLEa0N0pkTAKdXjJRaZd1Zgd98/4tBnLGpck0frWK5Qcd9F49KASB 2PK3dyQ5N44zU8thxuVw6tRYgv6fI8id6Jiv66DtjraEGkX0yWRAK3+6BbCb4EvxOW5p s7KSjBRx4p5cjaeu7eDgFfQbsJR0Rcn9kQso7g5uO2oAXrfThZBFuBMAVr82FZI9Z8nH GFkMEMxOzLebZvqny5s0YqAxoVRGTA2fxFn6isfXSd5I59SpAZd7vGDBBn34uMedxj5/ wEdA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=o8w0waXD; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-114863-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-114863-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id h3-20020a056402280300b0056b9b4d969dsi2400098ede.351.2024.03.25.00.07.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 00:07:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-114863-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=o8w0waXD; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-114863-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-114863-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 am.mirrors.kernel.org (Postfix) with ESMTPS id 57C761F2EE25 for ; Mon, 25 Mar 2024 07:07:13 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1C8F62C70EB; Mon, 25 Mar 2024 00:53:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="o8w0waXD" 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 729EF27B11E; Sun, 24 Mar 2024 23:38:27 +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=1711323508; cv=none; b=SH8UUGXcPud2GTmq2nZK7BzK21LwuMnQdyNOmX11Nxcw5JIc1/9c7y4UIrLOTuGBUtFp0kpMNMgY3PYh789Lei6kidUokU3ErjlRU2DF0NtvBGKA6SDjq77J0VfEbexLYLVMgpvAlzYWjU6FFwe428ImjHNXnqQMITvxAUYxMbU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711323508; c=relaxed/simple; bh=5F+W2XVBb8jBoA1hXh/onNUbYNMRYXAAcVlmlGC3wtQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AF8hWihUx+2gING4PxlhM6wrbbCTipd3QOgh0vZdCAYol7774Fnzms5QgXd4erzWrB20rKy2801wqz4yeEEXvuCM0K01eact5hkOuGFvhYIsm8g/PfMnUxp+HNCPdYRZYu2HHRQ/EcVOY1WiPZF00ATONxDoLwmK1QsGRw6Z5V4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=o8w0waXD; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id B5AF8C433C7; Sun, 24 Mar 2024 23:38:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711323507; bh=5F+W2XVBb8jBoA1hXh/onNUbYNMRYXAAcVlmlGC3wtQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=o8w0waXDB1f/Ojsj3BHAFSvlpHsxlz6JnQ1IUVPxGK3p+K8g1NyFqtAJR8KGCl3P7 BokJHLtuQ/9p3lDmlgS8ZAdNUF09Y87SbXJi3bRjHd1T3+9Fs2sVihIDE4Z9OJPz8Y 1fegMxW2FxjMgA7LwwsSD9hGPbFSK0IRIqf7AJBTf0uLVnX046nun7/MRI0SEYVG4v Pp145inkLI5SyDb6XDOiiT+BzUz1UD5YzPIkQIqFaTaSSsD297+TWLY3smbGyMcprq GamO1M22uFi2827ydAWajvZFZ4Wv/BCbJeuq4gl0C7QSL6QjpPlv2aguRrHYpe2uU9 94DhtNr2epLCw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Arnd Bergmann , Hans Verkuil , Sasha Levin Subject: [PATCH 5.15 213/317] media: pvrusb2: fix pvr2_stream_callback casts Date: Sun, 24 Mar 2024 19:33:13 -0400 Message-ID: <20240324233458.1352854-214-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240324233458.1352854-1-sashal@kernel.org> References: <20240324233458.1352854-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: Arnd Bergmann [ Upstream commit 30baa4a96b23add91a87305baaeba82c4e109e1f ] clang-16 complains about a control flow integrity (KCFI) issue in pvrusb2, which casts three different prototypes into pvr2_stream_callback: drivers/media/usb/pvrusb2/pvrusb2-v4l2.c:1070:30: error: cast from 'void (*)(struct pvr2_v4l2_fh *)' to 'pvr2_stream_callback' (aka 'void (*)(void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict] 1070 | pvr2_stream_set_callback(sp,(pvr2_stream_callback)pvr2_v4l2_notify,fh); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/media/usb/pvrusb2/pvrusb2-context.c:110:6: error: cast from 'void (*)(struct pvr2_context *)' to 'void (*)(void *)' converts to incompatible function type [-Werror,-Wcast-function-type-strict] 110 | (void (*)(void *))pvr2_context_notify, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/media/usb/pvrusb2/pvrusb2-dvb.c:152:6: error: cast from 'void (*)(struct pvr2_dvb_adapter *)' to 'pvr2_stream_callback' (aka 'void (*)(void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict] 152 | (pvr2_stream_callback) pvr2_dvb_notify, adap); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Change the functions to actually take a void* argument so the cast is no longer needed. Fixes: bb8ce9d9143c ("V4L/DVB (7682): pvrusb2-dvb: finish up stream & buffer handling") Signed-off-by: Arnd Bergmann Signed-off-by: Hans Verkuil Signed-off-by: Sasha Levin --- drivers/media/usb/pvrusb2/pvrusb2-context.c | 8 ++++---- drivers/media/usb/pvrusb2/pvrusb2-dvb.c | 6 ++++-- drivers/media/usb/pvrusb2/pvrusb2-v4l2.c | 6 ++++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/media/usb/pvrusb2/pvrusb2-context.c b/drivers/media/usb/pvrusb2/pvrusb2-context.c index 1764674de98bc..58f2f3ff10ee2 100644 --- a/drivers/media/usb/pvrusb2/pvrusb2-context.c +++ b/drivers/media/usb/pvrusb2/pvrusb2-context.c @@ -90,8 +90,10 @@ static void pvr2_context_destroy(struct pvr2_context *mp) } -static void pvr2_context_notify(struct pvr2_context *mp) +static void pvr2_context_notify(void *ptr) { + struct pvr2_context *mp = ptr; + pvr2_context_set_notify(mp,!0); } @@ -106,9 +108,7 @@ static void pvr2_context_check(struct pvr2_context *mp) pvr2_trace(PVR2_TRACE_CTXT, "pvr2_context %p (initialize)", mp); /* Finish hardware initialization */ - if (pvr2_hdw_initialize(mp->hdw, - (void (*)(void *))pvr2_context_notify, - mp)) { + if (pvr2_hdw_initialize(mp->hdw, pvr2_context_notify, mp)) { mp->video_stream.stream = pvr2_hdw_get_video_stream(mp->hdw); /* Trigger interface initialization. By doing this diff --git a/drivers/media/usb/pvrusb2/pvrusb2-dvb.c b/drivers/media/usb/pvrusb2/pvrusb2-dvb.c index 6954584526a32..1b768e7466721 100644 --- a/drivers/media/usb/pvrusb2/pvrusb2-dvb.c +++ b/drivers/media/usb/pvrusb2/pvrusb2-dvb.c @@ -88,8 +88,10 @@ static int pvr2_dvb_feed_thread(void *data) return stat; } -static void pvr2_dvb_notify(struct pvr2_dvb_adapter *adap) +static void pvr2_dvb_notify(void *ptr) { + struct pvr2_dvb_adapter *adap = ptr; + wake_up(&adap->buffer_wait_data); } @@ -149,7 +151,7 @@ static int pvr2_dvb_stream_do_start(struct pvr2_dvb_adapter *adap) } pvr2_stream_set_callback(pvr->video_stream.stream, - (pvr2_stream_callback) pvr2_dvb_notify, adap); + pvr2_dvb_notify, adap); ret = pvr2_stream_set_buffer_count(stream, PVR2_DVB_BUFFER_COUNT); if (ret < 0) return ret; diff --git a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c index c872868becbdc..29f2e767f236f 100644 --- a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c +++ b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c @@ -1037,8 +1037,10 @@ static int pvr2_v4l2_open(struct file *file) } -static void pvr2_v4l2_notify(struct pvr2_v4l2_fh *fhp) +static void pvr2_v4l2_notify(void *ptr) { + struct pvr2_v4l2_fh *fhp = ptr; + wake_up(&fhp->wait_data); } @@ -1071,7 +1073,7 @@ static int pvr2_v4l2_iosetup(struct pvr2_v4l2_fh *fh) hdw = fh->channel.mc_head->hdw; sp = fh->pdi->stream->stream; - pvr2_stream_set_callback(sp,(pvr2_stream_callback)pvr2_v4l2_notify,fh); + pvr2_stream_set_callback(sp, pvr2_v4l2_notify, fh); pvr2_hdw_set_stream_type(hdw,fh->pdi->config); if ((ret = pvr2_hdw_set_streaming(hdw,!0)) < 0) return ret; return pvr2_ioread_set_enabled(fh->rhp,!0); -- 2.43.0