diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2020-01-30 16:39:10 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2020-01-30 16:39:10 +0100 |
commit | 5e237e8c77279a0873a5e9806a5459ebc840c9ce (patch) | |
tree | f2fc8f3d2fefe719cd187909a164edca5c02c39c | |
parent | Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc (diff) | |
parent | ide: make drive->dn read only (diff) | |
download | linux-5e237e8c77279a0873a5e9806a5459ebc840c9ce.tar.xz linux-5e237e8c77279a0873a5e9806a5459ebc840c9ce.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide
Pull IDE updates from David Miller:
1) Fix mem region name in tx4949ide driver, from Christophe JAILLET.
2) Make drive->dn read only, it should not be changeable by users. From
Dan Carpenter.
3) Several cast fixups from Krzysztof Kozlowski.
There is also going to be a removal of a now unused IDE driver, but that
will come via the MIPS tree.
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide:
ide: make drive->dn read only
ide: serverworks: potential overflow in svwks_set_pio_mode()
cmd64x: potential buffer overflow in cmd64x_program_timings()
ide: remove unneeded header include path to drivers/ide
ide: qd65xx: Fix cast to pointer from integer of different size
ide: ht6560b: Fix cast to pointer from integer of different size
ide: remove set but not used variable 'hwif'
ide: remove unnecessary touch_softlockup_watchdog
ide: tx4939ide: Fix the name used in a 'devm_request_mem_region()' call
ide: Use dev_get_drvdata where possible
-rw-r--r-- | drivers/ide/Makefile | 2 | ||||
-rw-r--r-- | drivers/ide/cmd64x.c | 3 | ||||
-rw-r--r-- | drivers/ide/ht6560b.c | 2 | ||||
-rw-r--r-- | drivers/ide/ide-iops.c | 1 | ||||
-rw-r--r-- | drivers/ide/ide-proc.c | 2 | ||||
-rw-r--r-- | drivers/ide/pmac.c | 3 | ||||
-rw-r--r-- | drivers/ide/qd65xx.c | 2 | ||||
-rw-r--r-- | drivers/ide/serverworks.c | 6 | ||||
-rw-r--r-- | drivers/ide/siimage.c | 3 | ||||
-rw-r--r-- | drivers/ide/tx4939ide.c | 2 | ||||
-rw-r--r-- | drivers/ide/via82cxxx.c | 3 | ||||
-rw-r--r-- | include/linux/ide.h | 4 |
12 files changed, 20 insertions, 13 deletions
diff --git a/drivers/ide/Makefile b/drivers/ide/Makefile index cac02db4098d..d4f4409cfb8b 100644 --- a/drivers/ide/Makefile +++ b/drivers/ide/Makefile @@ -3,8 +3,6 @@ # link order is important here # -ccflags-y := -Idrivers/ide - ide-core-y += ide.o ide-ioctls.o ide-io.o ide-iops.o ide-lib.o ide-probe.o \ ide-taskfile.o ide-pm.o ide-park.o ide-sysfs.o ide-devsets.o \ ide-io-std.o ide-eh.o diff --git a/drivers/ide/cmd64x.c b/drivers/ide/cmd64x.c index a1898e11b04e..943bf944bf72 100644 --- a/drivers/ide/cmd64x.c +++ b/drivers/ide/cmd64x.c @@ -66,6 +66,9 @@ static void cmd64x_program_timings(ide_drive_t *drive, u8 mode) struct ide_timing t; u8 arttim = 0; + if (drive->dn >= ARRAY_SIZE(drwtim_regs)) + return; + ide_timing_compute(drive, mode, &t, T, 0); /* diff --git a/drivers/ide/ht6560b.c b/drivers/ide/ht6560b.c index 0dae65ac7d6d..743bc3693ac8 100644 --- a/drivers/ide/ht6560b.c +++ b/drivers/ide/ht6560b.c @@ -310,7 +310,7 @@ static void __init ht6560b_init_dev(ide_drive_t *drive) { ide_hwif_t *hwif = drive->hwif; /* Setting default configurations for drives. */ - int t = (HT_CONFIG_DEFAULT << 8) | HT_TIMING_DEFAULT; + unsigned long t = (HT_CONFIG_DEFAULT << 8) | HT_TIMING_DEFAULT; if (hwif->channel) t |= (HT_SECONDARY_IF << 8); diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index d1445d74e9c3..f2be127ee96e 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c @@ -530,7 +530,6 @@ int ide_wait_not_busy(ide_hwif_t *hwif, unsigned long timeout) */ if (stat == 0xff) return -ENODEV; - touch_softlockup_watchdog(); touch_nmi_watchdog(); } return -EBUSY; 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/drivers/ide/pmac.c b/drivers/ide/pmac.c index b5647e34e74e..ea0b064b5f56 100644 --- a/drivers/ide/pmac.c +++ b/drivers/ide/pmac.c @@ -1019,7 +1019,6 @@ static int pmac_ide_setup_device(pmac_ide_hwif_t *pmif, struct ide_hw *hw) struct device_node *np = pmif->node; const int *bidp; struct ide_host *host; - ide_hwif_t *hwif; struct ide_hw *hws[] = { hw }; struct ide_port_info d = pmac_port_info; int rc; @@ -1075,7 +1074,7 @@ static int pmac_ide_setup_device(pmac_ide_hwif_t *pmif, struct ide_hw *hw) rc = -ENOMEM; goto bail; } - hwif = pmif->hwif = host->ports[0]; + pmif->hwif = host->ports[0]; if (on_media_bay(pmif)) { /* Fixup bus ID for media bay */ diff --git a/drivers/ide/qd65xx.c b/drivers/ide/qd65xx.c index 6ce318ebd0cc..ab79b6289464 100644 --- a/drivers/ide/qd65xx.c +++ b/drivers/ide/qd65xx.c @@ -299,7 +299,7 @@ static void __init qd6500_init_dev(ide_drive_t *drive) static void __init qd6580_init_dev(ide_drive_t *drive) { ide_hwif_t *hwif = drive->hwif; - u16 t1, t2; + unsigned long t1, t2; u8 base = (hwif->config_data & 0xff00) >> 8; u8 config = QD_CONFIG(hwif); diff --git a/drivers/ide/serverworks.c b/drivers/ide/serverworks.c index ac6fc3fffa0d..458e72e034b0 100644 --- a/drivers/ide/serverworks.c +++ b/drivers/ide/serverworks.c @@ -115,6 +115,9 @@ static void svwks_set_pio_mode(ide_hwif_t *hwif, ide_drive_t *drive) struct pci_dev *dev = to_pci_dev(hwif->dev); const u8 pio = drive->pio_mode - XFER_PIO_0; + if (drive->dn >= ARRAY_SIZE(drive_pci)) + return; + pci_write_config_byte(dev, drive_pci[drive->dn], pio_modes[pio]); if (svwks_csb_check(dev)) { @@ -141,6 +144,9 @@ static void svwks_set_dma_mode(ide_hwif_t *hwif, ide_drive_t *drive) u8 ultra_enable = 0, ultra_timing = 0, dma_timing = 0; + if (drive->dn >= ARRAY_SIZE(drive_pci2)) + return; + pci_read_config_byte(dev, (0x56|hwif->channel), &ultra_timing); pci_read_config_byte(dev, 0x54, &ultra_enable); diff --git a/drivers/ide/siimage.c b/drivers/ide/siimage.c index 57eea5a9047f..c4b20f350b84 100644 --- a/drivers/ide/siimage.c +++ b/drivers/ide/siimage.c @@ -648,8 +648,7 @@ static void sil_quirkproc(ide_drive_t *drive) static void init_iops_siimage(ide_hwif_t *hwif) { - struct pci_dev *dev = to_pci_dev(hwif->dev); - struct ide_host *host = pci_get_drvdata(dev); + struct ide_host *host = dev_get_drvdata(hwif->dev); hwif->hwif_data = NULL; diff --git a/drivers/ide/tx4939ide.c b/drivers/ide/tx4939ide.c index d5e871fe840d..b1bbf807bb3d 100644 --- a/drivers/ide/tx4939ide.c +++ b/drivers/ide/tx4939ide.c @@ -549,7 +549,7 @@ static int __init tx4939ide_probe(struct platform_device *pdev) return -ENODEV; if (!devm_request_mem_region(&pdev->dev, res->start, - resource_size(res), "tx4938ide")) + resource_size(res), MODNAME)) return -EBUSY; mapbase = (unsigned long)devm_ioremap(&pdev->dev, res->start, resource_size(res)); diff --git a/drivers/ide/via82cxxx.c b/drivers/ide/via82cxxx.c index 977cb00398b0..63a3aca506fc 100644 --- a/drivers/ide/via82cxxx.c +++ b/drivers/ide/via82cxxx.c @@ -175,8 +175,7 @@ static void via_set_speed(ide_hwif_t *hwif, u8 dn, struct ide_timing *timing) static void via_set_drive(ide_hwif_t *hwif, ide_drive_t *drive) { ide_drive_t *peer = ide_get_pair_dev(drive); - struct pci_dev *dev = to_pci_dev(hwif->dev); - struct ide_host *host = pci_get_drvdata(dev); + struct ide_host *host = dev_get_drvdata(hwif->dev); struct via82cxxx_dev *vdev = host->host_priv; struct ide_timing t, p; unsigned int T, UT; diff --git a/include/linux/ide.h b/include/linux/ide.h index 06dae6438557..a254841bd315 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h @@ -945,6 +945,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); \ |