int rc;
 
        if (!state)
-               goto error;
+               return NULL;
 
        /* setup the state */
        state->config = config;
 
        u8 *buf;
 
        buf = kmalloc(len + 1, GFP_KERNEL);
-       if (buf == NULL) {
-               ret = -ENOMEM;
-               goto error;
-       }
+       if (!buf)
+               return -ENOMEM;
 
        *(buf) = reg;
        memcpy(buf + 1, data, len);
                ret = -EREMOTEIO;
        }
 
-error:
        kfree(buf);
 
        return ret;
        /* allocate memory for the internal state */
        state = kzalloc(sizeof(*state), GFP_KERNEL);
        if (state == NULL)
-               goto error1;
+               return NULL;
 
        state->config = config;
        state->i2c = i2c;
        ret = (cx24116_readreg(state, 0xFF) << 8) |
                cx24116_readreg(state, 0xFE);
        if (ret != 0x0501) {
+               kfree(state);
                printk(KERN_INFO "Invalid probe, probably not a CX24116 device\n");
-               goto error2;
+               return NULL;
        }
 
        /* create dvb_frontend */
                sizeof(struct dvb_frontend_ops));
        state->frontend.demodulator_priv = state;
        return &state->frontend;
-
-error2: kfree(state);
-error1: return NULL;
 }
 EXPORT_SYMBOL(cx24116_attach);
 
 
        /* allocate memory for the internal state */
        state = kzalloc(sizeof(*state), GFP_KERNEL);
        if (!state)
-               goto error2;
+               return NULL;
 
        state->config = config;
        state->i2c = i2c;
        /* check if the demod is present */
        ret = ds3000_readreg(state, 0x00) & 0xfe;
        if (ret != 0xe0) {
+               kfree(state);
                printk(KERN_ERR "Invalid probe, probably not a DS3000\n");
-               goto error3;
+               return NULL;
        }
 
        printk(KERN_INFO "DS3000 chip version: %d.%d attached.\n",
         */
        ds3000_set_voltage(&state->frontend, SEC_VOLTAGE_OFF);
        return &state->frontend;
-
-error3:
-       kfree(state);
-error2:
-       return NULL;
 }
 EXPORT_SYMBOL(ds3000_attach);
 
 
        /* allocate memory for the internal state */
        state = kzalloc(sizeof(*state), GFP_KERNEL);
        if (!state)
-               goto error;
+               return NULL;
 
        /* setup the state */
        state->config = config;
 
        /* Check if it is a mb86a20s frontend */
        rev = mb86a20s_readreg(state, 0);
-
-       if (rev == 0x13) {
-               dev_info(&i2c->dev,
-                        "Detected a Fujitsu mb86a20s frontend\n");
-       } else {
+       if (rev != 0x13) {
+               kfree(state);
                dev_dbg(&i2c->dev,
                        "Frontend revision %d is unknown - aborting.\n",
                       rev);
-               goto error;
+               return NULL;
        }
 
+       dev_info(&i2c->dev, "Detected a Fujitsu mb86a20s frontend\n");
        return &state->frontend;
-
-error:
-       kfree(state);
-       return NULL;
 }
 EXPORT_SYMBOL(mb86a20s_attach);