- oa->o_dropped = tgt_grant_inflate(tgd, (u64)oa->o_dropped);
- oa->o_undirty = tgt_grant_inflate(tgd, oa->o_undirty);
+ /* inflation can bump client's wish to >4GB which doesn't fit
+ * 32bit o_undirty, limit that .. */
+ tmp = tgt_grant_inflate(tgd, oa->o_undirty);
+ if (tmp >= OBD_MAX_GRANT)
+ tmp = OBD_MAX_GRANT & ~(1ULL << tgd->tgd_blockbits);
+ oa->o_undirty = tmp;
+ tmp = tgt_grant_inflate(tgd, oa->o_dropped);
+ if (tmp >= OBD_MAX_GRANT)
+ tmp = OBD_MAX_GRANT & ~(1ULL << tgd->tgd_blockbits);
+ oa->o_dropped = tmp;