Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 9c986d3 in mainline


Ignore:
Timestamp:
2011-12-09T22:08:25Z (10 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master
Children:
8f5b4d44
Parents:
89128f3
Message:

ohci: Use ddf_dev_data_alloc instead of plain malloc.

Fix possible free failure (fun→driver_data).

Location:
uspace/drv/bus/usb/ohci
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/ohci/hc.c

    r89128f3 r9c986d3  
    148148        return ret; \
    149149} else (void)0
     150
    150151        ret = usb_endpoint_manager_add_ep(
    151152            &instance->generic.ep_manager, instance->rh.address, 0,
  • uspace/drv/bus/usb/ohci/ohci.c

    r89128f3 r9c986d3  
    140140int device_setup_ohci(ddf_dev_t *device)
    141141{
    142         assert(device);
    143 
    144         ohci_t *instance = malloc(sizeof(ohci_t));
     142        if (device == NULL)
     143                return EBADMEM;
     144
     145        ohci_t *instance = ddf_dev_data_alloc(device,sizeof(ohci_t));
    145146        if (instance == NULL) {
    146147                usb_log_error("Failed to allocate OHCI driver.\n");
    147148                return ENOMEM;
    148149        }
    149         instance->rh_fun = NULL;
    150         instance->hc_fun = NULL;
    151150
    152151#define CHECK_RET_DEST_FREE_RETURN(ret, message...) \
    153152if (ret != EOK) { \
    154153        if (instance->hc_fun) { \
     154                instance->hc_fun->driver_data = NULL; \
    155155                ddf_fun_destroy(instance->hc_fun); \
    156156        } \
    157157        if (instance->rh_fun) { \
     158                instance->rh_fun->driver_data = NULL; \
    158159                ddf_fun_destroy(instance->rh_fun); \
    159160        } \
    160         free(instance); \
    161161        usb_log_error(message); \
    162162        return ret; \
     
    219219            "Failed to init ohci_hcd: %s.\n", str_error(ret));
    220220
    221         device->driver_data = instance;
    222 
    223221#define CHECK_RET_FINI_RETURN(ret, message...) \
    224222if (ret != EOK) { \
Note: See TracChangeset for help on using the changeset viewer.