diff --git a/drivers/misc/fsl_law.c b/drivers/misc/fsl_law.c
index be43a3ecf69fea1ab39cb5ffbc66d89d3ce798a1..f7d454dce457d75e4677fd0710c6b064cbabd44f 100644
--- a/drivers/misc/fsl_law.c
+++ b/drivers/misc/fsl_law.c
@@ -139,6 +139,9 @@ int set_ddr_laws(u64 start, u64 sz, enum law_trgt_if id)
 	if (set_last_law(start, law_sz_enc, id) < 0)
 		return -1;
 
+	/* recalculate size based on what was actually covered by the law */
+	law_sz = 1ull << __ilog2_u64(law_sz);
+
 	/* do we still have anything to map */
 	sz = sz - law_sz;
 	if (sz) {