Message ID | 877fj44xk5.wl%kuninori.morimoto.gx@renesas.com (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Geert Uytterhoeven |
Headers | show |
Hi Morimoto-san, On Wed, Jan 20, 2016 at 6:45 AM, Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> wrote: > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > It needs to check maximum trip size before using it. > Otherwise, each driver might be called with unsupported trip. > > Reported-by: Magnus Damm <magnus.damm@gmail.com> > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > --- > drivers/thermal/thermal_core.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c > index 7f7a3ca..9761f49 100644 > --- a/drivers/thermal/thermal_core.c > +++ b/drivers/thermal/thermal_core.c > @@ -461,6 +461,9 @@ static void thermal_tripped_notify(struct thermal_zone_device *tz, > kobject_uevent_env(&tz->device.kobj, KOBJ_CHANGE, msg); > } > > + if (tz->trips <= trip + 1) > + goto unlock; > + Thanks, I assume this will fix the "rcar_thermal e61f0000.thermal: rcar driver trip error" messages. However, I don't know if it's the right fix, cfr. my unanswered question at https://lkml.org/lkml/2016/1/5/107 > ret = tz->ops->get_trip_temp(tz, trip + 1, &upper_trip_temp); > if (ret) > goto unlock; > -- > 1.9.1 Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Hi Geert > > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > > > It needs to check maximum trip size before using it. > > Otherwise, each driver might be called with unsupported trip. > > > > Reported-by: Magnus Damm <magnus.damm@gmail.com> > > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > --- > > drivers/thermal/thermal_core.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c > > index 7f7a3ca..9761f49 100644 > > --- a/drivers/thermal/thermal_core.c > > +++ b/drivers/thermal/thermal_core.c > > @@ -461,6 +461,9 @@ static void thermal_tripped_notify(struct thermal_zone_device *tz, > > kobject_uevent_env(&tz->device.kobj, KOBJ_CHANGE, msg); > > } > > > > + if (tz->trips <= trip + 1) > > + goto unlock; > > + > > Thanks, I assume this will fix the "rcar_thermal e61f0000.thermal: rcar > driver trip error" messages. > > However, I don't know if it's the right fix, cfr. my unanswered question at > https://lkml.org/lkml/2016/1/5/107 > > > ret = tz->ops->get_trip_temp(tz, trip + 1, &upper_trip_temp); > > if (ret) > > goto unlock; Yes. we have 2 solutions. 1) use this patch 2) dev_warn() -> dev_dbg() But my opinion is that using trip with +1 without checking supported size is strange :)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 7f7a3ca..9761f49 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -461,6 +461,9 @@ static void thermal_tripped_notify(struct thermal_zone_device *tz, kobject_uevent_env(&tz->device.kobj, KOBJ_CHANGE, msg); } + if (tz->trips <= trip + 1) + goto unlock; + ret = tz->ops->get_trip_temp(tz, trip + 1, &upper_trip_temp); if (ret) goto unlock;