diff options
author | 2020-01-21 16:06:42 +0300 | |
---|---|---|
committer | 2020-01-30 11:03:24 +0100 | |
commit | 2fd3c5c617937cde5aafa48db4f4056e1f705987 (patch) | |
tree | 05bece251a79b561d0e2734117ea2532233e2bc8 | |
parent | ide: serverworks: potential overflow in svwks_set_pio_mode() (diff) | |
download | wireguard-linux-2fd3c5c617937cde5aafa48db4f4056e1f705987.tar.xz wireguard-linux-2fd3c5c617937cde5aafa48db4f4056e1f705987.zip |
ide: make drive->dn read only
The IDE core always sets ->dn correctly so changing it is never
required.
Setting it to a different value than assigned by IDE core is very likely
to result in data corruption (due to wrong transfer timings being set on
the controller etc.)
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Tested-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/ide/ide-proc.c | 2 | ||||
-rw-r--r-- | include/linux/ide.h | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/ide/ide-proc.c b/drivers/ide/ide-proc.c index 0363d73b0be0..e73016cbd406 100644 --- a/drivers/ide/ide-proc.c +++ b/drivers/ide/ide-proc.c @@ -206,7 +206,7 @@ static int set_xfer_rate (ide_drive_t *drive, int arg) ide_devset_rw(current_speed, xfer_rate); ide_devset_rw_field(init_speed, init_speed); ide_devset_rw_flag(nice1, IDE_DFLAG_NICE1); -ide_devset_rw_field(number, dn); +ide_devset_ro_field(number, dn); static const struct ide_proc_devset ide_generic_settings[] = { IDE_PROC_DEVSET(current_speed, 0, 70), diff --git a/include/linux/ide.h b/include/linux/ide.h index 46b771d6999e..25046ffa5a4a 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h @@ -943,6 +943,10 @@ ide_devset_get(_name, _field); \ ide_devset_set(_name, _field); \ IDE_DEVSET(_name, DS_SYNC, get_##_name, set_##_name) +#define ide_devset_ro_field(_name, _field) \ +ide_devset_get(_name, _field); \ +IDE_DEVSET(_name, 0, get_##_name, NULL) + #define ide_devset_rw_flag(_name, _field) \ ide_devset_get_flag(_name, _field); \ ide_devset_set_flag(_name, _field); \ |