lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 25 Feb 2017 09:39:16 +0800 From: liuxinliang <z.liuxinliang@...ilicon.com> To: John Stultz <john.stultz@...aro.org>, lkml <linux-kernel@...r.kernel.org> CC: Rongrong Zou <zourongrong@...il.com>, Xinwei Kong <kong.kongxinwei@...ilicon.com>, Chen Feng <puck.chen@...ilicon.com>, "David Airlie" <airlied@...ux.ie>, Daniel Vetter <daniel.vetter@...ll.ch>, Sean Paul <seanpaul@...omium.org>, <dri-devel@...ts.freedesktop.org> Subject: Re: [RFC][PATCH v2] drm: kirin: Add a mutex to avoid fb initialization race Hi John, The patch seems good to me, except one minus comment. Maybe change fb_lock to fbdev_lock would be better. Thanks, -xinliang On 2017/2/25 9:25, John Stultz wrote: > In some cases I've been seeing a race where two framebuffers > would be initialized, as kirin_fbdev_output_poll_changed() > might get called quickly in succession, resulting in the > initialization happening twice. This could cause the system > to boot up with a blank screen. > > This patch adds a simple mutex to serialize it and seems to > avoid the race. > > Suggestions or feedback would be greatly appreciated! > > Cc: Xinliang Liu <z.liuxinliang@...ilicon.com> > Cc: Rongrong Zou <zourongrong@...il.com> > Cc: Xinwei Kong <kong.kongxinwei@...ilicon.com> > Cc: Chen Feng <puck.chen@...ilicon.com> > Cc: David Airlie <airlied@...ux.ie> > Cc: Daniel Vetter <daniel.vetter@...ll.ch> > Cc: Sean Paul <seanpaul@...omium.org> > Cc: dri-devel@...ts.freedesktop.org > Signed-off-by: John Stultz <john.stultz@...aro.org> > --- > drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 4 ++++ > drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h | 1 + > 2 files changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c > index 7ec93ae..b83556a 100644 > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c > @@ -55,6 +55,7 @@ static void kirin_fbdev_output_poll_changed(struct drm_device *dev) > { > struct kirin_drm_private *priv = dev->dev_private; > > + mutex_lock(&priv->fb_lock); > if (priv->fbdev) { > drm_fbdev_cma_hotplug_event(priv->fbdev); > } else { > @@ -63,6 +64,7 @@ static void kirin_fbdev_output_poll_changed(struct drm_device *dev) > if (IS_ERR(priv->fbdev)) > priv->fbdev = NULL; > } > + mutex_unlock(&priv->fb_lock); > } > #endif > > @@ -95,6 +97,8 @@ static int kirin_drm_kms_init(struct drm_device *dev) > if (!priv) > return -ENOMEM; > > + mutex_init(&priv->fb_lock); > + > dev->dev_private = priv; > dev_set_drvdata(dev->dev, dev); > > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h > index 7f60c649..9b6d2b1 100644 > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.h > @@ -23,6 +23,7 @@ struct kirin_drm_private { > #ifdef CONFIG_DRM_FBDEV_EMULATION > struct drm_fbdev_cma *fbdev; > #endif > + struct mutex fb_lock; > }; > > extern const struct kirin_dc_ops ade_dc_ops;
Powered by blists - more mailing lists