In each case, if the NULL test is necessary, then the dereference should be
moved below the NULL test.
The semantic patch that makes this change is as follows:
(http://www.emn.fr/x-info/coccinelle/)
// <smpl>
@@
type T;
expression E;
identifier i,fld;
statement S;
@@
- T i = E->fld;
+ T i;
  ... when != E
      when != i
  if (E == NULL) S
+ i = E->fld;
// </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
 static void
 ph_state_change(struct dchannel *dch)
 {
-       struct hfc_multi *hc = dch->hw;
+       struct hfc_multi *hc;
        int ch, i;
 
        if (!dch) {
                    __func__);
                return;
        }
+       hc = dch->hw;
        ch = dch->slot;
 
        if (hc->type == 1) {