1*1f5207b7SJohn Levon#!/bin/bash
2*1f5207b7SJohn Levon
3*1f5207b7SJohn Levonfile=$1
4*1f5207b7SJohn Levonif [[ "$file" = "" ]] ; then
5*1f5207b7SJohn Levon    echo "Usage:  $0 <file with smatch messages>"
6*1f5207b7SJohn Levon    exit 1
7*1f5207b7SJohn Levonfi
8*1f5207b7SJohn Levon
9*1f5207b7SJohn LevonIFS="
10*1f5207b7SJohn Levon"
11*1f5207b7SJohn Levon
12*1f5207b7SJohn Levonfor line in $(grep 'dereferenced before' $file) ; do
13*1f5207b7SJohn Levon
14*1f5207b7SJohn Levon    code_file=$(echo "$line" | cut -d ':' -f1)
15*1f5207b7SJohn Levon    lineno=$(echo "$line" | cut -d ' ' -f1 | cut -d ':' -f2)
16*1f5207b7SJohn Levon    function=$(echo "$line" | cut -d ' ' -f2)
17*1f5207b7SJohn Levon    variable=$(echo "$line" | cut -d "'" -f3)
18*1f5207b7SJohn Levon    source_line=$(tail -n +$lineno $code_file | head -n 1 | sed -e 's/^\W*//')
19*1f5207b7SJohn Levon
20*1f5207b7SJohn Levon    if echo "$source_line" | grep -q rcu_assign_pointer ; then
21*1f5207b7SJohn Levon	continue
22*1f5207b7SJohn Levon    fi
23*1f5207b7SJohn Levon    if echo "$source_line" | grep -q '^\W*tda_' ; then
24*1f5207b7SJohn Levon	continue
25*1f5207b7SJohn Levon    fi
26*1f5207b7SJohn Levon    if echo "$source_line" | grep -q tda_fail ; then
27*1f5207b7SJohn Levon	continue
28*1f5207b7SJohn Levon    fi
29*1f5207b7SJohn Levon    if echo "$source_line" | grep -q '^\W*ATH5K_' ; then
30*1f5207b7SJohn Levon	continue
31*1f5207b7SJohn Levon    fi
32*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw CMDINFO ; then
33*1f5207b7SJohn Levon	continue
34*1f5207b7SJohn Levon    fi
35*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw dump_desc_dbg ; then
36*1f5207b7SJohn Levon	continue
37*1f5207b7SJohn Levon    fi
38*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw CAMERA_IS_OPERATIONAL ; then
39*1f5207b7SJohn Levon	continue
40*1f5207b7SJohn Levon    fi
41*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw USBVISION_IS_OPERATIONAL ; then
42*1f5207b7SJohn Levon	continue
43*1f5207b7SJohn Levon    fi
44*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw DEV_INIT_TEST_WITH_RETURN ; then
45*1f5207b7SJohn Levon	continue
46*1f5207b7SJohn Levon    fi
47*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw TW_PRINTK ; then
48*1f5207b7SJohn Levon	continue
49*1f5207b7SJohn Levon    fi
50*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw RESET_ONE_SEC_TX_CNT ; then
51*1f5207b7SJohn Levon	continue
52*1f5207b7SJohn Levon    fi
53*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw SOCK_DEBUG; then
54*1f5207b7SJohn Levon	continue
55*1f5207b7SJohn Levon    fi
56*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw P80211SKB_RXMETA ; then
57*1f5207b7SJohn Levon	continue
58*1f5207b7SJohn Levon    fi
59*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw ACM_READY ; then
60*1f5207b7SJohn Levon	continue
61*1f5207b7SJohn Levon    fi
62*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw v4l2_subdev_notify ; then
63*1f5207b7SJohn Levon	continue
64*1f5207b7SJohn Levon    fi
65*1f5207b7SJohn Levon    if echo "$source_line" | egrep -qw 'tuner_(err|info)' ; then
66*1f5207b7SJohn Levon	continue
67*1f5207b7SJohn Levon    fi
68*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw DBG_SKB ; then
69*1f5207b7SJohn Levon	continue
70*1f5207b7SJohn Levon    fi
71*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw for_each_mddev ; then
72*1f5207b7SJohn Levon	continue
73*1f5207b7SJohn Levon    fi
74*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw v4l2_subdev_call ; then
75*1f5207b7SJohn Levon	continue
76*1f5207b7SJohn Levon    fi
77*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw VALID_CALLBACK ; then
78*1f5207b7SJohn Levon	continue
79*1f5207b7SJohn Levon    fi
80*1f5207b7SJohn Levon    if [ "$variable" == "bp->dev" ] && echo "$source_line" | grep -qw DP ; then
81*1f5207b7SJohn Levon	continue
82*1f5207b7SJohn Levon    fi
83*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw BNX2X_ERR ; then
84*1f5207b7SJohn Levon	continue
85*1f5207b7SJohn Levon    fi
86*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw FCOE_NETDEV_DBG ; then
87*1f5207b7SJohn Levon	continue
88*1f5207b7SJohn Levon    fi
89*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw __rq_for_each_bio ; then
90*1f5207b7SJohn Levon	continue
91*1f5207b7SJohn Levon    fi
92*1f5207b7SJohn Levon    if echo "$source_line" | grep -qw IPS_DMA_DIR ; then
93*1f5207b7SJohn Levon	continue
94*1f5207b7SJohn Levon    fi
95*1f5207b7SJohn Levon    if [ "$variable" == "dev" ] && echo "$source_line" | grep -qw dprintk ; then
96*1f5207b7SJohn Levon	continue
97*1f5207b7SJohn Levon    fi
98*1f5207b7SJohn Levon
99*1f5207b7SJohn Levon    echo "$code_file:$lineno $function '$variable': $source_line"
100*1f5207b7SJohn Levondone
101*1f5207b7SJohn Levon
102