Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp818779imm; Thu, 4 Oct 2018 04:01:12 -0700 (PDT) X-Google-Smtp-Source: ACcGV600P6Pcstvhqmrz2rR5KloZuBSZQIKMcW5InXEvq6jjJ2PcUaGF5HkcFJRzoMBa/7ZDvReR X-Received: by 2002:a63:c508:: with SMTP id f8-v6mr5298912pgd.412.1538650872356; Thu, 04 Oct 2018 04:01:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538650872; cv=none; d=google.com; s=arc-20160816; b=00fMQxN9eDchd0I2RR/mptNFoPUyusoADt0PeOGuOAbDOqz54/qAGmmeNv7epfQWKc IvvL+owR5SmlfAH+CF/kprdDgLnFS47kM87nUJYt+p4LgGdsu+h/ajfpQ1Fm9BBZFbOb NBeOD3BFhNSBhXcMzoCYSMgqrrM69Q1lSaCKWSwQtTF24W1fYOBiKvc4AVg5q+2K+nGa i/E0sYPaUa3yKdA3LUXGtaNtfbb+OY/kMiPYjyq+gefCDItSLzR948093kfD2I7j1PDu DeNHuDk9/Q2LEIvDCuP+K7p+xHD8k9AM5F63MDZz3VU0cDJbTEF0r+cdDRGIKXanUpe2 QpFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:to:from:date; bh=ILwAT/9+F2MUnq2v4AHSwKQ/bGWleMQQMwSzIYpE91c=; b=YH/NQway4xG+jQ4w1bGAriwLOCfYJIjaeGQujZdhFkIzoR78UO0Nrwn0Rs6sfPrywD 8seVIFR/o23CnF16kDo/9t2ntCsEqWMELzniylVaJXTPThk+wVr5Vd7APQk3OTIHaFUN FSdwVQAWX5Go5AyuasiMH8oW9X2ncs/Yv2IX6zqoCTFkQpdlRDkqlVHU0FIgLaBns6OW +mBQfjh+jjjoPZ++CE1/EZO5bDS5D3uR3PGntetkzB/xnubUpbDwKDl17uEEps2QE3Tl cn7j3F0qxwJyWNqXfE9flJqV2oUY0HQOzTHlOcmlQJxwEYF/Kfx49Nofdf/WeqFbb+lv upPw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 138-v6si4353796pgc.218.2018.10.04.04.00.56; Thu, 04 Oct 2018 04:01:12 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727374AbeJDRxd (ORCPT + 99 others); Thu, 4 Oct 2018 13:53:33 -0400 Received: from mga04.intel.com ([192.55.52.120]:58703 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727131AbeJDRxd (ORCPT ); Thu, 4 Oct 2018 13:53:33 -0400 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Oct 2018 04:00:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.54,338,1534834800"; d="scan'208";a="78646832" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga008.jf.intel.com with SMTP; 04 Oct 2018 04:00:44 -0700 Received: by stinkbox (sSMTP sendmail emulation); Thu, 04 Oct 2018 14:00:43 +0300 Date: Thu, 4 Oct 2018 14:00:43 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Eugeniy Paltsev , David Airlie , Alexey Brodkin , linux-kernel@vger.kernel.org, stable@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-snps-arc@lists.infradead.org, Sean Paul Subject: Re: [PATCH v2] drm: fb-helper: Reject all pixel format changing requests Message-ID: <20181004110043.GP9144@intel.com> References: <20181003164538.5534-1-Eugeniy.Paltsev@synopsys.com> <20181004103422.GL9144@intel.com> <20181004104938.GJ31561@phenom.ffwll.local> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20181004104938.GJ31561@phenom.ffwll.local> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Oct 04, 2018 at 12:49:38PM +0200, Daniel Vetter wrote: > On Thu, Oct 04, 2018 at 01:34:22PM +0300, Ville Syrj?l? wrote: > > On Wed, Oct 03, 2018 at 07:45:38PM +0300, Eugeniy Paltsev wrote: > > > drm fbdev emulation doesn't support changing the pixel format at all, > > > so reject all pixel format changing requests. > > > > > > Cc: stable@vger.kernel.org > > > Signed-off-by: Eugeniy Paltsev > > > --- > > > Changes v1->v2: > > > * Reject all pixel format changing request, not just the invalid ones. > > > > > > drivers/gpu/drm/drm_fb_helper.c | 91 ++++++++++++----------------------------- > > > 1 file changed, 26 insertions(+), 65 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > > > index 16ec93b75dbf..48598d7f673f 100644 > > > --- a/drivers/gpu/drm/drm_fb_helper.c > > > +++ b/drivers/gpu/drm/drm_fb_helper.c > > > @@ -1580,6 +1580,25 @@ int drm_fb_helper_ioctl(struct fb_info *info, unsigned int cmd, > > > } > > > EXPORT_SYMBOL(drm_fb_helper_ioctl); > > > > > > +static bool drm_fb_pixel_format_equal(const struct fb_var_screeninfo *var_1, > > > + const struct fb_var_screeninfo *var_2) > > > +{ > > > + return var_1->bits_per_pixel == var_2->bits_per_pixel && > > > + var_1->grayscale == var_2->grayscale && > > > + var_1->red.offset == var_2->red.offset && > > > + var_1->red.length == var_2->red.length && > > > + var_1->red.msb_right == var_2->red.msb_right && > > > + var_1->green.offset == var_2->green.offset && > > > + var_1->green.length == var_2->green.length && > > > + var_1->green.msb_right == var_2->green.msb_right && > > > + var_1->blue.offset == var_2->blue.offset && > > > + var_1->blue.length == var_2->blue.length && > > > + var_1->blue.msb_right == var_2->blue.msb_right && > > > + var_1->transp.offset == var_2->transp.offset && > > > + var_1->transp.length == var_2->transp.length && > > > + var_1->transp.msb_right == var_2->transp.msb_right; > > > +} > > > > Could have shortened a bit with memcmp() but this works too. > > I'm always vary of memcmp with structs that might have padding and stuff. These are uabi so padding would be rather bad. > > > Reviewed-by: Ville Syrj?l? > > > > I suppose we really should be doing the same for most of the rest of > > var_screeninfo as we don't allow changing the timings/etc. either. > > Timing at least doens't have an immediate correctness impact of userspace > rendering the wrong format :-) > > Thanks for review&patch, applied to drm-misc-fixes. > -Daniel > > > > > > + > > > /** > > > * drm_fb_helper_check_var - implementation for &fb_ops.fb_check_var > > > * @var: screeninfo to check > > > @@ -1590,7 +1609,6 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var, > > > { > > > struct drm_fb_helper *fb_helper = info->par; > > > struct drm_framebuffer *fb = fb_helper->fb; > > > - int depth; > > > > > > if (var->pixclock != 0 || in_dbg_master()) > > > return -EINVAL; > > > @@ -1610,72 +1628,15 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var, > > > return -EINVAL; > > > } > > > > > > - switch (var->bits_per_pixel) { > > > - case 16: > > > - depth = (var->green.length == 6) ? 16 : 15; > > > - break; > > > - case 32: > > > - depth = (var->transp.length > 0) ? 32 : 24; > > > - break; > > > - default: > > > - depth = var->bits_per_pixel; > > > - break; > > > - } > > > - > > > - switch (depth) { > > > - case 8: > > > - var->red.offset = 0; > > > - var->green.offset = 0; > > > - var->blue.offset = 0; > > > - var->red.length = 8; > > > - var->green.length = 8; > > > - var->blue.length = 8; > > > - var->transp.length = 0; > > > - var->transp.offset = 0; > > > - break; > > > - case 15: > > > - var->red.offset = 10; > > > - var->green.offset = 5; > > > - var->blue.offset = 0; > > > - var->red.length = 5; > > > - var->green.length = 5; > > > - var->blue.length = 5; > > > - var->transp.length = 1; > > > - var->transp.offset = 15; > > > - break; > > > - case 16: > > > - var->red.offset = 11; > > > - var->green.offset = 5; > > > - var->blue.offset = 0; > > > - var->red.length = 5; > > > - var->green.length = 6; > > > - var->blue.length = 5; > > > - var->transp.length = 0; > > > - var->transp.offset = 0; > > > - break; > > > - case 24: > > > - var->red.offset = 16; > > > - var->green.offset = 8; > > > - var->blue.offset = 0; > > > - var->red.length = 8; > > > - var->green.length = 8; > > > - var->blue.length = 8; > > > - var->transp.length = 0; > > > - var->transp.offset = 0; > > > - break; > > > - case 32: > > > - var->red.offset = 16; > > > - var->green.offset = 8; > > > - var->blue.offset = 0; > > > - var->red.length = 8; > > > - var->green.length = 8; > > > - var->blue.length = 8; > > > - var->transp.length = 8; > > > - var->transp.offset = 24; > > > - break; > > > - default: > > > + /* > > > + * drm fbdev emulation doesn't support changing the pixel format at all, > > > + * so reject all pixel format changing requests. > > > + */ > > > + if (!drm_fb_pixel_format_equal(var, &info->var)) { > > > + DRM_DEBUG("fbdev emulation doesn't support changing the pixel format\n"); > > > return -EINVAL; > > > } > > > + > > > return 0; > > > } > > > EXPORT_SYMBOL(drm_fb_helper_check_var); > > > -- > > > 2.14.4 > > > > > > _______________________________________________ > > > dri-devel mailing list > > > dri-devel@lists.freedesktop.org > > > https://lists.freedesktop.org/mailman/listinfo/dri-devel > > > > -- > > Ville Syrj?l? > > Intel > > _______________________________________________ > > dri-devel mailing list > > dri-devel@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/dri-devel > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch -- Ville Syrj?l? Intel