Message ID | 20210611165937.701-2-cristian.marussi@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Introduce SCMI VirtIO transport | expand |
Hi Cristian, please find some remarks to the patch series in this email and the following. On 11.06.21 18:59, Cristian Marussi wrote: > SCMI message headers carry a sequence number and such field is sized to > allow for MSG_TOKEN_MAX distinct numbers; moreover zero is not really an > acceptable maximum number of pending in-flight messages. > > Fix accordignly the checks performed on the value exported by transports > in scmi_desc.max_msg. > > Reported-by: Vincent Guittot <vincent.guittot@linaro.org> > Fixes: aa4f886f3893 ("firmware: arm_scmi: add basic driver infrastructure for SCMI") > Signed-off-by: Cristian Marussi <cristian.marussi@arm.com> > --- > drivers/firmware/arm_scmi/driver.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c > index 66e5e694be7d..6713b259f1e6 100644 > --- a/drivers/firmware/arm_scmi/driver.c > +++ b/drivers/firmware/arm_scmi/driver.c > @@ -1025,8 +1025,9 @@ static int __scmi_xfer_info_init(struct scmi_info *sinfo, > const struct scmi_desc *desc = sinfo->desc; > > /* Pre-allocated messages, no more than what hdr.seq can support */ > - if (WARN_ON(desc->max_msg >= MSG_TOKEN_MAX)) { > - dev_err(dev, "Maximum message of %d exceeds supported %ld\n", > + if (WARN_ON(!desc->max_msg || desc->max_msg > MSG_TOKEN_MAX)) { > + dev_err(dev, > + "Invalid max_msg %d. Maximum messages supported %ld.\n", %ld -> %lu > desc->max_msg, MSG_TOKEN_MAX); > return -EINVAL; > } >
Hi Peter, On Thu, Jul 01, 2021 at 10:42:40AM +0200, Peter Hilber wrote: > Hi Cristian, > > please find some remarks to the patch series in this email and the > following. > Thanks for your comments, very much appreciated. I'll reply inline. Just to let you know, I have ready a V5 series where, beside some general cleanup and further simplification, I addressed in the SCMI core the issue that you pointed out about the possible concurrent and out-of-order response/delayed_response delivery by the transport. I've refrained from posting that on the list still, due to the merge window being open. I'll post most probably next week. (still have to see if I can also simplify probing sequence in V5...which is the last point in my list) > On 11.06.21 18:59, Cristian Marussi wrote: > > SCMI message headers carry a sequence number and such field is sized to > > allow for MSG_TOKEN_MAX distinct numbers; moreover zero is not really an > > acceptable maximum number of pending in-flight messages. > > > > Fix accordignly the checks performed on the value exported by transports > > in scmi_desc.max_msg. > > > > Reported-by: Vincent Guittot <vincent.guittot@linaro.org> > > Fixes: aa4f886f3893 ("firmware: arm_scmi: add basic driver infrastructure for SCMI") > > Signed-off-by: Cristian Marussi <cristian.marussi@arm.com> > > --- > > drivers/firmware/arm_scmi/driver.c | 5 +++-- > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c > > index 66e5e694be7d..6713b259f1e6 100644 > > --- a/drivers/firmware/arm_scmi/driver.c > > +++ b/drivers/firmware/arm_scmi/driver.c > > @@ -1025,8 +1025,9 @@ static int __scmi_xfer_info_init(struct scmi_info *sinfo, > > const struct scmi_desc *desc = sinfo->desc; > > /* Pre-allocated messages, no more than what hdr.seq can support */ > > - if (WARN_ON(desc->max_msg >= MSG_TOKEN_MAX)) { > > - dev_err(dev, "Maximum message of %d exceeds supported %ld\n", > > + if (WARN_ON(!desc->max_msg || desc->max_msg > MSG_TOKEN_MAX)) { > > + dev_err(dev, > > + "Invalid max_msg %d. Maximum messages supported %ld.\n", > > %ld -> %lu > Right, I'll fix. > > desc->max_msg, MSG_TOKEN_MAX); > > return -EINVAL; > > } > > Thanks, Cristian
diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c index 66e5e694be7d..6713b259f1e6 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -1025,8 +1025,9 @@ static int __scmi_xfer_info_init(struct scmi_info *sinfo, const struct scmi_desc *desc = sinfo->desc; /* Pre-allocated messages, no more than what hdr.seq can support */ - if (WARN_ON(desc->max_msg >= MSG_TOKEN_MAX)) { - dev_err(dev, "Maximum message of %d exceeds supported %ld\n", + if (WARN_ON(!desc->max_msg || desc->max_msg > MSG_TOKEN_MAX)) { + dev_err(dev, + "Invalid max_msg %d. Maximum messages supported %ld.\n", desc->max_msg, MSG_TOKEN_MAX); return -EINVAL; }
SCMI message headers carry a sequence number and such field is sized to allow for MSG_TOKEN_MAX distinct numbers; moreover zero is not really an acceptable maximum number of pending in-flight messages. Fix accordignly the checks performed on the value exported by transports in scmi_desc.max_msg. Reported-by: Vincent Guittot <vincent.guittot@linaro.org> Fixes: aa4f886f3893 ("firmware: arm_scmi: add basic driver infrastructure for SCMI") Signed-off-by: Cristian Marussi <cristian.marussi@arm.com> --- drivers/firmware/arm_scmi/driver.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)