hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/bus/mhi/core/init.c
similarity index 98%rename from kernel/drivers/bus/mhi/core/init.crename to kernel/drivers/bus/mhi/host/init.c
....@@ -498,6 +498,12 @@
498498 return -EIO;
499499 }
500500
501
+ if (val >= mhi_cntrl->reg_len - (8 * MHI_DEV_WAKE_DB)) {
502
+ dev_err(dev, "CHDB offset: 0x%x is out of range: 0x%zx\n",
503
+ val, mhi_cntrl->reg_len - (8 * MHI_DEV_WAKE_DB));
504
+ return -ERANGE;
505
+ }
506
+
501507 /* Setup wake db */
502508 mhi_cntrl->wake_db = base + val + (8 * MHI_DEV_WAKE_DB);
503509 mhi_write_reg(mhi_cntrl, mhi_cntrl->wake_db, 4, 0);
....@@ -517,6 +523,12 @@
517523 return -EIO;
518524 }
519525
526
+ if (val >= mhi_cntrl->reg_len - (8 * mhi_cntrl->total_ev_rings)) {
527
+ dev_err(dev, "ERDB offset: 0x%x is out of range: 0x%zx\n",
528
+ val, mhi_cntrl->reg_len - (8 * mhi_cntrl->total_ev_rings));
529
+ return -ERANGE;
530
+ }
531
+
520532 /* Setup event db address for each ev_ring */
521533 mhi_event = mhi_cntrl->mhi_event;
522534 for (i = 0; i < mhi_cntrl->total_ev_rings; i++, val += 8, mhi_event++) {