File tree Expand file tree Collapse file tree 1 file changed +8
-1
lines changed Expand file tree Collapse file tree 1 file changed +8
-1
lines changed Original file line number Diff line number Diff line change @@ -47,6 +47,7 @@ static struct syscon *of_syscon_register(struct device_node *np, bool check_res)
47
47
struct regmap_config syscon_config = syscon_regmap_config ;
48
48
struct resource res ;
49
49
struct reset_control * reset ;
50
+ resource_size_t res_size ;
50
51
51
52
WARN_ON (!mutex_is_locked (& syscon_list_lock ));
52
53
@@ -96,14 +97,20 @@ static struct syscon *of_syscon_register(struct device_node *np, bool check_res)
96
97
}
97
98
}
98
99
100
+ res_size = resource_size (& res );
101
+ if (res_size < reg_io_width ) {
102
+ ret = - EFAULT ;
103
+ goto err_regmap ;
104
+ }
105
+
99
106
syscon_config .name = kasprintf (GFP_KERNEL , "%pOFn@%pa" , np , & res .start );
100
107
if (!syscon_config .name ) {
101
108
ret = - ENOMEM ;
102
109
goto err_regmap ;
103
110
}
104
111
syscon_config .reg_stride = reg_io_width ;
105
112
syscon_config .val_bits = reg_io_width * 8 ;
106
- syscon_config .max_register = resource_size ( & res ) - reg_io_width ;
113
+ syscon_config .max_register = res_size - reg_io_width ;
107
114
if (!syscon_config .max_register )
108
115
syscon_config .max_register_is_0 = true;
109
116
You can’t perform that action at this time.
0 commit comments