On Thu, Aug 13, 2015 at 01:41:23PM +0900, Tony Cho wrote: > +static u32 get_id_from_handler(tstrWILC_WFIDrv *handler) > +{ > + u32 id; > + > + if (!handler) > + return 0; > + > + for (id = 0; id < NUM_CONCURRENT_IFC; id++) { > + if (wfidrv_list[id] == handler) { > + id += 1; > + break; > + } > + } > + > + if (id > NUM_CONCURRENT_IFC) > + return 0; > + else > + return id; > +} > + This still has an off by one bug. Just use zero offset arrays throughout. static int get_id_from_handler(tstrWILC_WFIDrv *handler) { int id; if (!handler) return -ENOBUFS; for (id = 0; id < NUM_CONCURRENT_IFC; id++) { if (wfidrv_list[id] == handler) return id; } return -ENOBUFS; } > +static tstrWILC_WFIDrv *get_handler_from_id(u32 id) > +{ > + if (id > 0 && id <= NUM_CONCURRENT_IFC) > + return wfidrv_list[id - 1]; > + else > + return NULL; > +} static tstrWILC_WFIDrv *get_handler_from_id(int id) { if (id < 0 || id >= NUM_CONCURRENT_IFC) return NULL; return wfidrv_list[id]; } regards, dan carpenter _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel