The dereference should be moved below the NULL test.
spatch with a semantic match is used to found this.
(http://coccinelle.lip6.fr/)
Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
        struct ioc3_port *port = get_ioc3_port(the_port);
        struct ring *inring;
        struct ring_entry *entry;
-       struct port_hooks *hooks = port->ip_hooks;
+       struct port_hooks *hooks;
        int byte_num;
        char *sc;
        int loop_counter;
 
        BUG_ON(!(len >= 0));
        BUG_ON(!port);
+       hooks = port->ip_hooks;
 
        /* There is a nasty timing issue in the IOC3. When the rx_timer
         * expires or the rx_high condition arises, we take an interrupt.
 
        struct ioc4_port *port = get_ioc4_port(the_port, 0);
        struct ring *inring;
        struct ring_entry *entry;
-       struct hooks *hooks = port->ip_hooks;
+       struct hooks *hooks;
        int byte_num;
        char *sc;
        int loop_counter;
 
        BUG_ON(!(len >= 0));
        BUG_ON(!port);
+       hooks = port->ip_hooks;
 
        /* There is a nasty timing issue in the IOC4. When the rx_timer
         * expires or the rx_high condition arises, we take an interrupt.