c
static int register_device(int minor, struct pp_struct *pp) {
    struct parport *port = NULL; // Initialize port to NULL
    char *name = kasprintf(GFP_KERNEL, CHRDEV "%x", minor);
    if (name == NULL) {
        return -ENOMEM; // Return error immediately
    }

    port = parport_find_number(minor);
    if (!port) {
        kfree(name); // Free 'name' before returning 
        return -ENODEV;
    }

    // ... rest of the code using 'port' and 'name' ...

    kfree(name); // Free 'name' before successful return
    return 0; 
}
