Print this page
NEX-15328 libdiskmgt: memleak in findevs()
Reviewed by: Alexander Eremin <alexander.eremin@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
NEX-15328 libdiskmgt: memleak in findevs()
Reviewed by: Alexander Eremin <alexander.eremin@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
NEX-14951 teach libdiskmgt about nvme, sata and xen
Reviewed by: Dan Fields <dan.fields@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libdiskmgt/common/findevs.c
          +++ new/usr/src/lib/libdiskmgt/common/findevs.c
↓ open down ↓ 143 lines elided ↑ open up ↑
 144  144  findevs(struct search_args *args)
 145  145  {
 146  146          di_node_t               di_root;
 147  147  
 148  148          args->bus_listp = NULL;
 149  149          args->controller_listp = NULL;
 150  150          args->disk_listp = NULL;
 151  151  
 152  152          args->dev_walk_status = 0;
 153  153          args->handle = di_devlink_init(NULL, 0);
      154 +        args->ph = di_prom_init();
 154  155  
 155  156          /*
 156  157           * Have to make several passes at this with the new devfs caching.
 157  158           * First, we find non-mpxio devices. Then we find mpxio/multipath
 158  159           * devices.
 159  160           */
 160  161          di_root = di_init("/", DINFOCACHE);
 161      -        args->ph = di_prom_init();
 162  162          (void) di_walk_minor(di_root, NULL, 0, args, add_devs);
 163  163          di_fini(di_root);
 164  164  
 165  165          di_root = di_init("/", DINFOCPYALL|DINFOPATH);
 166  166          (void) di_walk_minor(di_root, NULL, 0, args, add_devs);
 167  167          di_fini(di_root);
 168  168  
      169 +        if (args->ph != DI_PROM_HANDLE_NIL)
      170 +                di_prom_fini(args->ph);
 169  171          (void) di_devlink_fini(&(args->handle));
 170  172  
 171  173          clean_paths(args);
 172  174  }
 173  175  
 174  176  /*
 175  177   * Definitions of private functions
 176  178   */
 177  179  
 178  180  static bus_t *
↓ open down ↓ 1510 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX