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
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 7 Nov 2019 15:44:44 -0800
From:   Bjorn Andersson <bjorn.andersson@...aro.org>
To:     eberman@...eaurora.org
Cc:     saiprakash.ranjan@...eaurora.org, agross@...nel.org,
        tsoni@...eaurora.org, sidgup@...eaurora.org,
        psodagud@...eaurora.org, linux-arm-msm@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH 09/17] firmware: qcom_scm-64: Improve SMC convention
 detection

On Thu 07 Nov 12:20 PST 2019, eberman@...eaurora.org wrote:
> On 2019-11-07 11:18, Bjorn Andersson wrote:
[..]
> > > @@ -583,19 +591,17 @@ int
> > > __qcom_scm_qsmmu500_wait_safe_toggle(struct device *dev, bool en)
> > > 
> > >  void __qcom_scm_init(void)
> > >  {
> > > -	u64 cmd;
> > > -	struct arm_smccc_res res;
> > > -	u32 function = SMCCC_FUNCNUM(QCOM_SCM_SVC_INFO,
> > > QCOM_SCM_INFO_IS_CALL_AVAIL);
> > > -
> > > -	/* First try a SMC64 call */
> > > -	cmd = ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, ARM_SMCCC_SMC_64,
> > > -				 ARM_SMCCC_OWNER_SIP, function);
> > > -
> > > -	arm_smccc_smc(cmd, QCOM_SCM_ARGS(1), cmd &
> > > (~BIT(ARM_SMCCC_TYPE_SHIFT)),
> > > -		      0, 0, 0, 0, 0, &res);
> > > -
> > > -	if (!res.a0 && res.a1)
> > > -		qcom_smccc_convention = ARM_SMCCC_SMC_64;
> > > -	else
> > > -		qcom_smccc_convention = ARM_SMCCC_SMC_32;
> > > +	qcom_smc_convention = SMC_CONVENTION_ARM_64;
> > > +	if (__qcom_scm_is_call_available(NULL, QCOM_SCM_SVC_INFO,
> > > +			QCOM_SCM_INFO_IS_CALL_AVAIL) == 1)
> > > +		goto out;
> > > +
> > > +	qcom_smc_convention = SMC_CONVENTION_ARM_32;
> > > +	if (__qcom_scm_is_call_available(NULL, QCOM_SCM_SVC_INFO,
> > > +			QCOM_SCM_INFO_IS_CALL_AVAIL) == 1)
> > > +		goto out;
> > > +
> > > +	qcom_smc_convention = SMC_CONVENTION_UNKNOWN;
> > 
> > If above two tests can be considered reliable I would suggest that you
> > fail hard here instead.
> 
> Is the suggestion here to BUG out?
> 

We generally do not want that, but leaving it "unknown" feels like the
next scm call will have similar outcome to calling BUG() here, but be
harder to debug...

So I would be willing to accept a BUG() here.

Regards,
Bjorn

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ