mirror of
https://github.com/torvalds/linux.git
synced 2026-07-17 11:03:15 +02:00
of_node_put is needed before discarding a value received from of_find_node_by_name, eg in error handling code or when the device node is no longer used. The semantic match that catches the bug is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @r exists@ local idexpression struct device_node *n; position p1, p2; struct device_node *n1; statement S; identifier f; expression E; expression *ptr != NULL; @@ n@p1 = of_find_node_by_name(...) ... if (!n) S ... when != of_node_put(n) when != n1 = f(n,...) when != E = n when any when strict ( return \(0\|<+...n...+>\|ptr\); | return@p2 ...; | of_node_put(n); | n1 = f(n,...) | E = n ) @script:python@ p1 << r.p1; p2 << r.p2; @@ print "* file: %s of_find_node_by_name %s return %s" % (p1[0].file,p1[0].line,p2[0].line) // </smpl> Signed-off-by: Nicolas Palix <npalix@diku.dk> Signed-off-by: Julia Lawall <julia@diku.dk> Acked-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
|---|---|---|
| .. | ||
| adb-iop.c | ||
| adb.c | ||
| adbhid.c | ||
| ans-lcd.c | ||
| ans-lcd.h | ||
| apm_emu.c | ||
| Kconfig | ||
| mac_hid.c | ||
| macio_asic.c | ||
| macio_sysfs.c | ||
| macio-adb.c | ||
| Makefile | ||
| mediabay.c | ||
| nvram.c | ||
| rack-meter.c | ||
| smu.c | ||
| therm_adt746x.c | ||
| therm_pm72.c | ||
| therm_pm72.h | ||
| therm_windtunnel.c | ||
| via-cuda.c | ||
| via-macii.c | ||
| via-maciisi.c | ||
| via-pmu-backlight.c | ||
| via-pmu-event.c | ||
| via-pmu-event.h | ||
| via-pmu-led.c | ||
| via-pmu.c | ||
| via-pmu68k.c | ||
| windfarm_core.c | ||
| windfarm_cpufreq_clamp.c | ||
| windfarm_lm75_sensor.c | ||
| windfarm_max6690_sensor.c | ||
| windfarm_pid.c | ||
| windfarm_pid.h | ||
| windfarm_pm81.c | ||
| windfarm_pm91.c | ||
| windfarm_pm112.c | ||
| windfarm_pm121.c | ||
| windfarm_smu_controls.c | ||
| windfarm_smu_sat.c | ||
| windfarm_smu_sensors.c | ||
| windfarm.h | ||