|
|
@@ -553,7 +553,7 @@ static int stm_char_policy_set_ioctl(struct stm_file *stmf, void __user *arg)
|
|
|
{
|
|
|
struct stm_device *stm = stmf->stm;
|
|
|
struct stp_policy_id *id;
|
|
|
- int ret = -EINVAL;
|
|
|
+ int ret = -EINVAL, wlimit = 1;
|
|
|
u32 size;
|
|
|
|
|
|
if (stmf->output.nr_chans)
|
|
|
@@ -581,8 +581,10 @@ static int stm_char_policy_set_ioctl(struct stm_file *stmf, void __user *arg)
|
|
|
if (id->__reserved_0 || id->__reserved_1)
|
|
|
goto err_free;
|
|
|
|
|
|
- if (id->width < 1 ||
|
|
|
- id->width > PAGE_SIZE / stm->data->sw_mmiosz)
|
|
|
+ if (stm->data->sw_mmiosz)
|
|
|
+ wlimit = PAGE_SIZE / stm->data->sw_mmiosz;
|
|
|
+
|
|
|
+ if (id->width < 1 || id->width > wlimit)
|
|
|
goto err_free;
|
|
|
|
|
|
ret = stm_file_assign(stmf, id->id, id->width);
|