From patchwork Thu Mar 9 16:01:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Zimmermann X-Patchwork-Id: 66968 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:5915:0:0:0:0:0 with SMTP id v21csp386389wrd; Thu, 9 Mar 2023 08:29:18 -0800 (PST) X-Google-Smtp-Source: AK7set+yDZvSzIqodYPAL7w7iEMygamvEro2p6ObjPxai8zNad+nOm2yimgxb9YClBeh9iOymJP3 X-Received: by 2002:a17:902:ce8f:b0:19e:2495:20d2 with SMTP id f15-20020a170902ce8f00b0019e249520d2mr27237417plg.30.1678379357813; Thu, 09 Mar 2023 08:29:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1678379357; cv=none; d=google.com; s=arc-20160816; b=RDo1StJh33szQC3Y8ECwtD4B+9A54GtwcLqx/dy0WMOtXGW3ctIXqbKkUNqt0DRjQ/ eiPEFZuHPa4vpGmUTxGGJ+AMqmDoK7nsY0CEAJuvtlhI6r5JAv+ZmfHu/rCpsCND+Wud 12zPYG7TXysovms40H5Wf14fRdGUci3s2wk2qw1NBxnvfQ+fNuS4zuHQ8h7M1E109INJ 1Np0IbdWc27Ej6VhGEHTOK2j4YnMdbJjCrBHW/AtRlqVyp5JRKaWe9vtFtRPD7H35agv VBex87ZsahkD87zi91oYLeDcy5zUakx0Nxz01epKk9Qvew4eURllVwdiJR09dzIZfmc/ Bnnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=QjJ38kmNT4VpiL0XGaIUsP41fKqpOphAgyzqkf5KhKA=; b=C71FydFJDeFLujm1bEA1Rs9ms9SNXJxOBacwvQ+K6keh9+9ah6zpWeuY+4gAUVZsbb OAzQvHodZ2DMYdLklMbQwjn+sSId3vZuWHXr+rFthuKd2g6DwgLInrUxMNjFSrtAHznI M5/9H7LZEeOhH0jmRBrqhifhKfooAnM7jjQe2M7nOYgA/A0nkXW3FbnJJuwzy5BTIQ1+ 5/CWLnl9qbD/bsCOWHxHtEQ0OjJBFPbTnVR6a1jguPJlmApeNbeETaqigC+AtT8z6Cwv 9n+kGRF4Ts1FEqAWuOZMAXC5sDpnryjJT4/FwO1Q9Yq0n4FmLXszZBhRTBzdTGDlfND8 6pHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=JLe11LJE; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=bz5poN1C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id lb7-20020a170902fa4700b0017ae43612d9si2320432plb.324.2023.03.09.08.29.05; Thu, 09 Mar 2023 08:29:17 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=JLe11LJE; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=bz5poN1C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230437AbjCIQIq (ORCPT + 99 others); Thu, 9 Mar 2023 11:08:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47506 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231715AbjCIQCc (ORCPT ); Thu, 9 Mar 2023 11:02:32 -0500 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 335B2F63A3; Thu, 9 Mar 2023 08:02:31 -0800 (PST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id D940A2018F; Thu, 9 Mar 2023 16:02:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1678377749; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QjJ38kmNT4VpiL0XGaIUsP41fKqpOphAgyzqkf5KhKA=; b=JLe11LJEmiD4nLl8O7epakDml/E/WNFxS8XYIxOcUyoCg3JN580rEa+XFFqIuJ01mwt/pq jbY9KoIsTr78epKZ8bw0X6sdPaS16SEqEvp4pJ/00qWTCkD7INw9UYOQuzLeNO5g8zYHhG 4Qi/RVEwLUZBux2CjvrnfsbBZkhS+yA= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1678377749; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QjJ38kmNT4VpiL0XGaIUsP41fKqpOphAgyzqkf5KhKA=; b=bz5poN1CD5ySwXlFVjpP3CyHkn8fTspT1RxOz5lCIW1I2NIbHe6SrgZ8As5oiHQSjSsubf MF73NTrD34lgu6Bw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 825E01391B; Thu, 9 Mar 2023 16:02:29 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id sGn5HhUDCmQHbgAAMHmgww (envelope-from ); Thu, 09 Mar 2023 16:02:29 +0000 From: Thomas Zimmermann To: deller@gmx.de, geert+renesas@glider.be, timur@kernel.org, rdunlap@infradead.org, paulus@samba.org, benh@kernel.crashing.org, linux@armlinux.org.uk, pjones@redhat.com, adaplas@gmail.com, s.hauer@pengutronix.de, shawnguo@kernel.org, mbroemme@libmpq.org, thomas@winischhofer.net, James.Bottomley@HansenPartnership.com, sudipm.mukherjee@gmail.com, teddy.wang@siliconmotion.com, corbet@lwn.net Cc: linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Thomas Zimmermann Subject: [PATCH v2 063/101] fbdev/pvr2fb: Duplicate video-mode option string Date: Thu, 9 Mar 2023 17:01:23 +0100 Message-Id: <20230309160201.5163-64-tzimmermann@suse.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230309160201.5163-1-tzimmermann@suse.de> References: <20230309160201.5163-1-tzimmermann@suse.de> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1759908313841759039?= X-GMAIL-MSGID: =?utf-8?q?1759908313841759039?= Assume that the driver does not own the option string or its substrings and hence duplicate the option string for the video mode. Allocate the copy's memory with kstrdup() and free it in the module's exit function, as well as the init function's error handling. Done in preparation of switching the driver to struct option_iter and constifying the option string. v2: * replace static memory with kstrdup()/kfree() (Geert) Signed-off-by: Thomas Zimmermann --- drivers/video/fbdev/pvr2fb.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/video/fbdev/pvr2fb.c b/drivers/video/fbdev/pvr2fb.c index 6888127a5eb8..f6be2649840d 100644 --- a/drivers/video/fbdev/pvr2fb.c +++ b/drivers/video/fbdev/pvr2fb.c @@ -225,6 +225,7 @@ static struct fb_videomode pvr2_modedb[] = { #define DEFMODE_VGA 2 static int defmode = DEFMODE_NTSC; +static char *mode_option_buf; static char *mode_option = NULL; static inline void pvr2fb_set_pal_type(unsigned int type) @@ -1049,7 +1050,9 @@ static int __init pvr2fb_setup(char *options) } else if (!strncmp(this_opt, "nowrap", 6)) { nowrap = 1; } else { - mode_option = this_opt; + kfree(mode_option_buf); + mode_option_buf = kstrdup(this_opt, GFP_KERNEL); // ignore errors + mode_option = mode_option_buf; } } @@ -1094,8 +1097,11 @@ static int __init pvr2fb_init(void) #endif fb_info = framebuffer_alloc(sizeof(struct pvr2fb_par), NULL); - if (!fb_info) + if (!fb_info) { + kfree(mode_option_buf); + mode_option_buf = NULL; return -ENOMEM; + } currentpar = fb_info->par; @@ -1111,6 +1117,8 @@ static int __init pvr2fb_init(void) printk(KERN_ERR "pvr2fb: Failed init of %s device\n", pvr_board->name); framebuffer_release(fb_info); + kfree(mode_option_buf); + mode_option_buf = NULL; break; } } @@ -1135,6 +1143,7 @@ static void __exit pvr2fb_exit(void) unregister_framebuffer(fb_info); framebuffer_release(fb_info); + kfree(mode_option_buf); } module_init(pvr2fb_init);