|
@@ -4090,7 +4090,20 @@ static int mv_platform_probe(struct platform_device *pdev)
|
|
|
|
|
|
/* allocate host */
|
|
|
if (pdev->dev.of_node) {
|
|
|
- of_property_read_u32(pdev->dev.of_node, "nr-ports", &n_ports);
|
|
|
+ rc = of_property_read_u32(pdev->dev.of_node, "nr-ports",
|
|
|
+ &n_ports);
|
|
|
+ if (rc) {
|
|
|
+ dev_err(&pdev->dev,
|
|
|
+ "error parsing nr-ports property: %d\n", rc);
|
|
|
+ return rc;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (n_ports <= 0) {
|
|
|
+ dev_err(&pdev->dev, "nr-ports must be positive: %d\n",
|
|
|
+ n_ports);
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
|
|
|
} else {
|
|
|
mv_platform_data = dev_get_platdata(&pdev->dev);
|