static void drx39xxj_release(struct dvb_frontend *fe)
 {
        struct drx39xxj_state *state = fe->demodulator_priv;
+       struct drx_demod_instance *demod = state->demod;
+
+       kfree(demod->my_ext_attr);
+       kfree(demod->my_common_attr);
+       kfree(demod->my_i2c_dev_addr);
+       kfree(demod);
        kfree(state);
 }
 
 
        demod->my_ext_attr = demod_ext_attr;
        memcpy(demod->my_ext_attr, &drxj_data_g, sizeof(struct drxj_data));
-       ((struct drxj_data *)demod->my_ext_attr)->uio_sma_tx_mode =
-           DRX_UIO_MODE_READWRITE;
+       ((struct drxj_data *)demod->my_ext_attr)->uio_sma_tx_mode = DRX_UIO_MODE_READWRITE;
 
        demod->my_tuner = NULL;
 
        result = drx_open(demod);
        if (result != 0) {
                pr_err("DRX open failed!  Aborting\n");
-               kfree(state);
-               return NULL;
+               goto error;
        }
 
        /* Turn off the LNA */
        uio_cfg.mode = DRX_UIO_MODE_READWRITE;
        /* Configure user-I/O #3: enable read/write */
        result = drx_ctrl(demod, DRX_CTRL_UIO_CFG, &uio_cfg);
-       if (result != 0) {
+       if (result) {
                pr_err("Failed to setup LNA GPIO!\n");
-               return NULL;
+               goto error;
        }
 
        uio_data.uio = DRX_UIO1;
        result = drx_ctrl(demod, DRX_CTRL_UIO_WRITE, &uio_data);
        if (result != 0) {
                pr_err("Failed to disable LNA!\n");
-               return NULL;
+               goto error;
        }
 
        /* create dvb_frontend */
        return &state->frontend;
 
 error:
-       if (state != NULL)
-               kfree(state);
-       if (demod != NULL)
-               kfree(demod);
+       kfree(demod_ext_attr);
+       kfree(demod_comm_attr);
+       kfree(demod_addr);
+       kfree(demod);
+       kfree(state);
+
        return NULL;
 }
 EXPORT_SYMBOL(drx39xxj_attach);
                 .frequency_stepsize = 62500,
                 .frequency_min = 51000000,
                 .frequency_max = 858000000,
-                .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB},
+                .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
+       },
 
        .init = drx39xxj_init,
        .i2c_gate_ctrl = drx39xxj_i2c_gate_ctrl,