On Thu, Dec 17, 2015 at 03:06:45PM +0300, Dan Carpenter wrote: > On Thu, Dec 17, 2015 at 02:00:23AM -0500, ira.weiny@xxxxxxxxx wrote: > > + mutex_lock(&uctxt->exp_lock); > > + /* > > + * The first step is to program the RcvArray entries which are complete > > + * groups. > > + */ > > + while (ngroups && uctxt->tid_group_list.count) { > > + struct tid_group *grp = > > + tid_group_pop(&uctxt->tid_group_list); > > + > > + ret = program_rcvarray(fp, vaddr, grp, pagesets, > > + pageidx, dd->rcv_entries.group_size, > > + pages, tidlist, &tididx, &mapped); > > + /* > > + * If there was a failure to program the RcvArray > > + * entries for the entire group, reset the grp fields > > + * and add the grp back to the free group list. > > + */ > > + if (ret <= 0) { > > + tid_group_add_tail(grp, &uctxt->tid_group_list); > > + hfi1_cdbg(TID, > > + "Failed to program RcvArray group %d", ret); > > + goto unlock; > > We print a failure message but we still return success when ret == 0. Not programming anything (return of 0) is allowed. So it should not be an error here. User space is required to handle this case. Ira _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel