All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Stein <alexander.stein@ew.tq-group.com>
To: Francesco Dolcini <francesco.dolcini@toradex.com>,
	Hongxing Zhu <hongxing.zhu@nxp.com>
Cc: "Lucas Stach" <l.stach@pengutronix.de>,
	"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Wilczyński" <kw@linux.com>,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	"Pengutronix Kernel Team" <kernel@pengutronix.de>,
	"Fabio Estevam" <festevam@gmail.com>,
	dl-linux-imx <linux-imx@nxp.com>,
	"Jason Liu" <jason.hui.liu@nxp.com>,
	linux-arm-kernel@lists.infradead.org,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Shawn Guo" <shawnguo@kernel.org>
Subject: Re: (EXT) RE: [RFC PATCH] PCI: imx6: Handle the abort from user-space
Date: Fri, 28 Jan 2022 11:18:04 +0100	[thread overview]
Message-ID: <4621593.CQOukoFCf9@steina-w> (raw)
In-Reply-To: <AS8PR04MB8676E90C0A394C82BB0A890B8C229@AS8PR04MB8676.eurprd04.prod.outlook.com>

Am Freitag, 28. Januar 2022, 10:25:11 CET schrieb Hongxing Zhu:
> > -----Original Message-----
> > From: Francesco Dolcini <francesco.dolcini@toradex.com>
> > Sent: 2022年1月28日 16:29
> > To: Hongxing Zhu <hongxing.zhu@nxp.com>; Lucas Stach
> > <l.stach@pengutronix.de>; Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>;
> > Rob
 Herring <robh@kernel.org>; Krzysztof Wilczyński <kw@linux.com>;
> > Sascha Hauer <s.hauer@pengutronix.de>; Pengutronix Kernel Team
> > <kernel@pengutronix.de>; Fabio Estevam <festevam@gmail.com>;
> > dl-linux-imx <linux-imx@nxp.com>; Jason Liu <jason.hui.liu@nxp.com>
> > Cc: linux-pci@vger.kernel.org; linux-arm-kernel@lists.infradead.org;
> > linux-kernel@vger.kernel.org; Bjorn Helgaas <bhelgaas@google.com>; Shawn
> > Guo <shawnguo@kernel.org>; Francesco Dolcini
> > <francesco.dolcini@toradex.com>
> > Subject: [RFC PATCH] PCI: imx6: Handle the abort from user-space
> > 
> > From: Jason Liu <jason.hui.liu@nxp.com>
> > 
> > The driver install one hook to handle the external abort, but issue is
> > that if the
 abort introduced from user space code, the following code
> > unsigned long instr = *(unsigned long *)pc; which will created another
> > data-abort(page domain fault) if CONFIG_CPU_SW_DOMAIN_PAN.
> > 
> > The patch does not intent to use copy_from_user and then do the hack due
> > to
 the security consideration. In fact, we can just return and report
> > the external abort to user-space.
> > 
> > Signed-off-by: Jason Liu <jason.hui.liu@nxp.com>
> > Reviewed-by: Richard Zhu <hongxing.zhu@nxp.com>
> > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> > ---
> > We have this patch from NXP downstream kernel [1] in our kernel branch
> > [2]
> > since a long time, to me it would make sense to upstream it. Any concern?
> > 
> > [1]
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsource.
> > codeaurora.org%2Fexternal%2Fimxsupport%2Flinux-imx%2Fcommit%2F%3Fid
> > %3D62dfb2fb953463dd1b6710567c9e174672a98f24&amp;data=04%7C01%7
> > Chongxing.zhu%40nxp.com%7Ccbe193ab4c3e4ad11bcb08d9e2384a1f%7C68
> > 6ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637789553659549198%7
> > CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBT
> > iI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=Mwhx8DFF7EDJdpqTsHT
> > %2BBAGzhQadDOqcgJnVjeoi1yk%3D&amp;reserved=0
> > [2]
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.tora
> > 
> > dex.com%2Fcgit%2Flinux-toradex.git%2Fcommit%2F%3Fid%3D2b42547cf659f
> > 979be2defdff6a99f921b33d0f1&amp;data=04%7C01%7Chongxing.zhu%40nx
> > p.com%7Ccbe193ab4c3e4ad11bcb08d9e2384a1f%7C686ea1d3bc2b4c6fa92c
> > d99c5c301635%7C0%7C0%7C637789553659549198%7CUnknown%7CTWFp
> > bGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI
> > 6Mn0%3D%7C3000&amp;sdata=QEW1frh8WacCzniWo4ng1cy3Z1UZ9uMRFw
> > GBKuIh7zE%3D&amp;reserved=0
> > ---
> > 
> >  drivers/pci/controller/dwc/pci-imx6.c | 12 ++++++++++--
> >  1 file changed, 10 insertions(+), 2 deletions(-)
> > 
> > 
> > diff --git a/drivers/pci/controller/dwc/pci-imx6.c
> > b/drivers/pci/controller/dwc/pci-imx6.c
> > index 6974bd5aa116..6b178a29e253 100644
> > --- a/drivers/pci/controller/dwc/pci-imx6.c
> > +++ b/drivers/pci/controller/dwc/pci-imx6.c
> > @@ -27,6 +27,7 @@
> > 
> >  #include <linux/resource.h>
> >  #include <linux/signal.h>
> >  #include <linux/types.h>
> > 
> > +#include <linux/uaccess.h>
> 
> 
> [Richard Zhu] Thanks for your kindly help.
> This header include is not required actually, please remove it.

It should be <linux/ptrace.h> instead, for using user_mode().
Best regards,
Alexander


> >  #include <linux/interrupt.h>
> >  #include <linux/reset.h>
> >  #include <linux/phy/phy.h>
> > 
> > @@ -297,8 +298,15 @@ static int imx6q_pcie_abort_handler(unsigned long
> > addr,
> > 
> >  		unsigned int fsr, struct pt_regs *regs)  {
> >  	
> >  	unsigned long pc = instruction_pointer(regs);
> > 
> > -	unsigned long instr = *(unsigned long *)pc;
> > -	int reg = (instr >> 12) & 15;
> > +	unsigned long instr;
> > +	int reg;
> > +
> > +	/* if the abort from user-space, just return and report it */
> > +	if (user_mode(regs))
> > +		return 1;
> > +
> > +	instr = *(unsigned long *)pc;
> > +	reg = (instr >> 12) & 15;
> > 
> > 
> >  	/*
> >  	
> >  	 * If the instruction being executed was a read,
> > 
> > --
> > 2.25.1
> 
> 





WARNING: multiple messages have this Message-ID (diff)
From: Alexander Stein <alexander.stein@ew.tq-group.com>
To: Francesco Dolcini <francesco.dolcini@toradex.com>,
	Hongxing Zhu <hongxing.zhu@nxp.com>
Cc: "Lucas Stach" <l.stach@pengutronix.de>,
	"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Wilczyński" <kw@linux.com>,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	"Pengutronix Kernel Team" <kernel@pengutronix.de>,
	"Fabio Estevam" <festevam@gmail.com>,
	dl-linux-imx <linux-imx@nxp.com>,
	"Jason Liu" <jason.hui.liu@nxp.com>,
	linux-arm-kernel@lists.infradead.org,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Shawn Guo" <shawnguo@kernel.org>
Subject: Re: (EXT) RE: [RFC PATCH] PCI: imx6: Handle the abort from user-space
Date: Fri, 28 Jan 2022 11:18:04 +0100	[thread overview]
Message-ID: <4621593.CQOukoFCf9@steina-w> (raw)
In-Reply-To: <AS8PR04MB8676E90C0A394C82BB0A890B8C229@AS8PR04MB8676.eurprd04.prod.outlook.com>

Am Freitag, 28. Januar 2022, 10:25:11 CET schrieb Hongxing Zhu:
> > -----Original Message-----
> > From: Francesco Dolcini <francesco.dolcini@toradex.com>
> > Sent: 2022年1月28日 16:29
> > To: Hongxing Zhu <hongxing.zhu@nxp.com>; Lucas Stach
> > <l.stach@pengutronix.de>; Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>;
> > Rob
 Herring <robh@kernel.org>; Krzysztof Wilczyński <kw@linux.com>;
> > Sascha Hauer <s.hauer@pengutronix.de>; Pengutronix Kernel Team
> > <kernel@pengutronix.de>; Fabio Estevam <festevam@gmail.com>;
> > dl-linux-imx <linux-imx@nxp.com>; Jason Liu <jason.hui.liu@nxp.com>
> > Cc: linux-pci@vger.kernel.org; linux-arm-kernel@lists.infradead.org;
> > linux-kernel@vger.kernel.org; Bjorn Helgaas <bhelgaas@google.com>; Shawn
> > Guo <shawnguo@kernel.org>; Francesco Dolcini
> > <francesco.dolcini@toradex.com>
> > Subject: [RFC PATCH] PCI: imx6: Handle the abort from user-space
> > 
> > From: Jason Liu <jason.hui.liu@nxp.com>
> > 
> > The driver install one hook to handle the external abort, but issue is
> > that if the
 abort introduced from user space code, the following code
> > unsigned long instr = *(unsigned long *)pc; which will created another
> > data-abort(page domain fault) if CONFIG_CPU_SW_DOMAIN_PAN.
> > 
> > The patch does not intent to use copy_from_user and then do the hack due
> > to
 the security consideration. In fact, we can just return and report
> > the external abort to user-space.
> > 
> > Signed-off-by: Jason Liu <jason.hui.liu@nxp.com>
> > Reviewed-by: Richard Zhu <hongxing.zhu@nxp.com>
> > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> > ---
> > We have this patch from NXP downstream kernel [1] in our kernel branch
> > [2]
> > since a long time, to me it would make sense to upstream it. Any concern?
> > 
> > [1]
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsource.
> > codeaurora.org%2Fexternal%2Fimxsupport%2Flinux-imx%2Fcommit%2F%3Fid
> > %3D62dfb2fb953463dd1b6710567c9e174672a98f24&amp;data=04%7C01%7
> > Chongxing.zhu%40nxp.com%7Ccbe193ab4c3e4ad11bcb08d9e2384a1f%7C68
> > 6ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637789553659549198%7
> > CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBT
> > iI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=Mwhx8DFF7EDJdpqTsHT
> > %2BBAGzhQadDOqcgJnVjeoi1yk%3D&amp;reserved=0
> > [2]
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.tora
> > 
> > dex.com%2Fcgit%2Flinux-toradex.git%2Fcommit%2F%3Fid%3D2b42547cf659f
> > 979be2defdff6a99f921b33d0f1&amp;data=04%7C01%7Chongxing.zhu%40nx
> > p.com%7Ccbe193ab4c3e4ad11bcb08d9e2384a1f%7C686ea1d3bc2b4c6fa92c
> > d99c5c301635%7C0%7C0%7C637789553659549198%7CUnknown%7CTWFp
> > bGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI
> > 6Mn0%3D%7C3000&amp;sdata=QEW1frh8WacCzniWo4ng1cy3Z1UZ9uMRFw
> > GBKuIh7zE%3D&amp;reserved=0
> > ---
> > 
> >  drivers/pci/controller/dwc/pci-imx6.c | 12 ++++++++++--
> >  1 file changed, 10 insertions(+), 2 deletions(-)
> > 
> > 
> > diff --git a/drivers/pci/controller/dwc/pci-imx6.c
> > b/drivers/pci/controller/dwc/pci-imx6.c
> > index 6974bd5aa116..6b178a29e253 100644
> > --- a/drivers/pci/controller/dwc/pci-imx6.c
> > +++ b/drivers/pci/controller/dwc/pci-imx6.c
> > @@ -27,6 +27,7 @@
> > 
> >  #include <linux/resource.h>
> >  #include <linux/signal.h>
> >  #include <linux/types.h>
> > 
> > +#include <linux/uaccess.h>
> 
> 
> [Richard Zhu] Thanks for your kindly help.
> This header include is not required actually, please remove it.

It should be <linux/ptrace.h> instead, for using user_mode().
Best regards,
Alexander


> >  #include <linux/interrupt.h>
> >  #include <linux/reset.h>
> >  #include <linux/phy/phy.h>
> > 
> > @@ -297,8 +298,15 @@ static int imx6q_pcie_abort_handler(unsigned long
> > addr,
> > 
> >  		unsigned int fsr, struct pt_regs *regs)  {
> >  	
> >  	unsigned long pc = instruction_pointer(regs);
> > 
> > -	unsigned long instr = *(unsigned long *)pc;
> > -	int reg = (instr >> 12) & 15;
> > +	unsigned long instr;
> > +	int reg;
> > +
> > +	/* if the abort from user-space, just return and report it */
> > +	if (user_mode(regs))
> > +		return 1;
> > +
> > +	instr = *(unsigned long *)pc;
> > +	reg = (instr >> 12) & 15;
> > 
> > 
> >  	/*
> >  	
> >  	 * If the instruction being executed was a read,
> > 
> > --
> > 2.25.1
> 
> 





_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-01-28 10:18 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-28  8:29 [RFC PATCH] PCI: imx6: Handle the abort from user-space Francesco Dolcini
2022-01-28  8:29 ` Francesco Dolcini
2022-01-28  9:07 ` Lucas Stach
2022-01-28  9:07   ` Lucas Stach
2022-01-28  9:25 ` Hongxing Zhu
2022-01-28  9:25   ` Hongxing Zhu
2022-01-28 10:18   ` Alexander Stein [this message]
2022-01-28 10:18     ` (EXT) " Alexander Stein

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4621593.CQOukoFCf9@steina-w \
    --to=alexander.stein@ew.tq-group.com \
    --cc=bhelgaas@google.com \
    --cc=festevam@gmail.com \
    --cc=francesco.dolcini@toradex.com \
    --cc=hongxing.zhu@nxp.com \
    --cc=jason.hui.liu@nxp.com \
    --cc=kernel@pengutronix.de \
    --cc=kw@linux.com \
    --cc=l.stach@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=robh@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.