diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/char/ipmi/ipmi_bt_sm.c | 2 | ||||
-rw-r--r-- | drivers/char/ipmi/ipmi_si_intf.c | 4 | ||||
-rw-r--r-- | drivers/char/tty_io.c | 8 | ||||
-rw-r--r-- | drivers/i2c/chips/m41t00.c | 8 | ||||
-rw-r--r-- | drivers/ide/pci/alim15x3.c | 2 | ||||
-rw-r--r-- | drivers/ide/pci/atiixp.c | 1 | ||||
-rw-r--r-- | drivers/ide/pci/pdc202xx_old.c | 2 | ||||
-rw-r--r-- | drivers/ide/setup-pci.c | 13 | ||||
-rw-r--r-- | drivers/parport/parport_pc.c | 20 | ||||
-rw-r--r-- | drivers/pnp/manager.c | 4 | ||||
-rw-r--r-- | drivers/serial/m32r_sio.c | 1 | ||||
-rw-r--r-- | drivers/video/aty/radeon_base.c | 2 | ||||
-rw-r--r-- | drivers/video/fbmem.c | 14 | ||||
-rw-r--r-- | drivers/video/savage/savagefb_driver.c | 8 |
14 files changed, 43 insertions, 46 deletions
diff --git a/drivers/char/ipmi/ipmi_bt_sm.c b/drivers/char/ipmi/ipmi_bt_sm.c index 58dcdee1cd71..0030cd8e2e95 100644 --- a/drivers/char/ipmi/ipmi_bt_sm.c +++ b/drivers/char/ipmi/ipmi_bt_sm.c | |||
@@ -165,7 +165,7 @@ static int bt_start_transaction(struct si_sm_data *bt, | |||
165 | { | 165 | { |
166 | unsigned int i; | 166 | unsigned int i; |
167 | 167 | ||
168 | if ((size < 2) || (size > IPMI_MAX_MSG_LENGTH)) | 168 | if ((size < 2) || (size > (IPMI_MAX_MSG_LENGTH - 2))) |
169 | return -1; | 169 | return -1; |
170 | 170 | ||
171 | if ((bt->state != BT_STATE_IDLE) && (bt->state != BT_STATE_HOSED)) | 171 | if ((bt->state != BT_STATE_IDLE) && (bt->state != BT_STATE_HOSED)) |
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c index a86c0f29953e..b36eef0e9d19 100644 --- a/drivers/char/ipmi/ipmi_si_intf.c +++ b/drivers/char/ipmi/ipmi_si_intf.c | |||
@@ -2198,11 +2198,11 @@ static inline void wait_for_timer_and_thread(struct smi_info *smi_info) | |||
2198 | } | 2198 | } |
2199 | } | 2199 | } |
2200 | 2200 | ||
2201 | static struct ipmi_default_vals | 2201 | static __devinitdata struct ipmi_default_vals |
2202 | { | 2202 | { |
2203 | int type; | 2203 | int type; |
2204 | int port; | 2204 | int port; |
2205 | } __devinit ipmi_defaults[] = | 2205 | } ipmi_defaults[] = |
2206 | { | 2206 | { |
2207 | { .type = SI_KCS, .port = 0xca2 }, | 2207 | { .type = SI_KCS, .port = 0xca2 }, |
2208 | { .type = SI_SMIC, .port = 0xca9 }, | 2208 | { .type = SI_SMIC, .port = 0xca9 }, |
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index 841f0bd3eaaf..f07637a8f88f 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c | |||
@@ -2723,7 +2723,11 @@ static void __do_SAK(void *arg) | |||
2723 | } | 2723 | } |
2724 | task_lock(p); | 2724 | task_lock(p); |
2725 | if (p->files) { | 2725 | if (p->files) { |
2726 | rcu_read_lock(); | 2726 | /* |
2727 | * We don't take a ref to the file, so we must | ||
2728 | * hold ->file_lock instead. | ||
2729 | */ | ||
2730 | spin_lock(&p->files->file_lock); | ||
2727 | fdt = files_fdtable(p->files); | 2731 | fdt = files_fdtable(p->files); |
2728 | for (i=0; i < fdt->max_fds; i++) { | 2732 | for (i=0; i < fdt->max_fds; i++) { |
2729 | filp = fcheck_files(p->files, i); | 2733 | filp = fcheck_files(p->files, i); |
@@ -2738,7 +2742,7 @@ static void __do_SAK(void *arg) | |||
2738 | break; | 2742 | break; |
2739 | } | 2743 | } |
2740 | } | 2744 | } |
2741 | rcu_read_unlock(); | 2745 | spin_unlock(&p->files->file_lock); |
2742 | } | 2746 | } |
2743 | task_unlock(p); | 2747 | task_unlock(p); |
2744 | } while_each_thread(g, p); | 2748 | } while_each_thread(g, p); |
diff --git a/drivers/i2c/chips/m41t00.c b/drivers/i2c/chips/m41t00.c index 27fc9ff2961a..99ab4ec34390 100644 --- a/drivers/i2c/chips/m41t00.c +++ b/drivers/i2c/chips/m41t00.c | |||
@@ -131,13 +131,13 @@ m41t00_set(void *arg) | |||
131 | if ((i2c_smbus_write_byte_data(save_client, 0, tm.tm_sec & 0x7f) < 0) | 131 | if ((i2c_smbus_write_byte_data(save_client, 0, tm.tm_sec & 0x7f) < 0) |
132 | || (i2c_smbus_write_byte_data(save_client, 1, tm.tm_min & 0x7f) | 132 | || (i2c_smbus_write_byte_data(save_client, 1, tm.tm_min & 0x7f) |
133 | < 0) | 133 | < 0) |
134 | || (i2c_smbus_write_byte_data(save_client, 2, tm.tm_hour & 0x7f) | 134 | || (i2c_smbus_write_byte_data(save_client, 2, tm.tm_hour & 0x3f) |
135 | < 0) | 135 | < 0) |
136 | || (i2c_smbus_write_byte_data(save_client, 4, tm.tm_mday & 0x7f) | 136 | || (i2c_smbus_write_byte_data(save_client, 4, tm.tm_mday & 0x3f) |
137 | < 0) | 137 | < 0) |
138 | || (i2c_smbus_write_byte_data(save_client, 5, tm.tm_mon & 0x7f) | 138 | || (i2c_smbus_write_byte_data(save_client, 5, tm.tm_mon & 0x1f) |
139 | < 0) | 139 | < 0) |
140 | || (i2c_smbus_write_byte_data(save_client, 6, tm.tm_year & 0x7f) | 140 | || (i2c_smbus_write_byte_data(save_client, 6, tm.tm_year & 0xff) |
141 | < 0)) | 141 | < 0)) |
142 | 142 | ||
143 | dev_warn(&save_client->dev,"m41t00: can't write to rtc chip\n"); | 143 | dev_warn(&save_client->dev,"m41t00: can't write to rtc chip\n"); |
diff --git a/drivers/ide/pci/alim15x3.c b/drivers/ide/pci/alim15x3.c index cf84350efc55..8b24b4f2a839 100644 --- a/drivers/ide/pci/alim15x3.c +++ b/drivers/ide/pci/alim15x3.c | |||
@@ -731,6 +731,8 @@ static unsigned int __devinit ata66_ali15x3 (ide_hwif_t *hwif) | |||
731 | 731 | ||
732 | if(m5229_revision <= 0x20) | 732 | if(m5229_revision <= 0x20) |
733 | tmpbyte = (tmpbyte & (~0x02)) | 0x01; | 733 | tmpbyte = (tmpbyte & (~0x02)) | 0x01; |
734 | else if (m5229_revision == 0xc7) | ||
735 | tmpbyte |= 0x03; | ||
734 | else | 736 | else |
735 | tmpbyte |= 0x01; | 737 | tmpbyte |= 0x01; |
736 | 738 | ||
diff --git a/drivers/ide/pci/atiixp.c b/drivers/ide/pci/atiixp.c index df9ee9a78435..900efd1da587 100644 --- a/drivers/ide/pci/atiixp.c +++ b/drivers/ide/pci/atiixp.c | |||
@@ -348,6 +348,7 @@ static struct pci_device_id atiixp_pci_tbl[] = { | |||
348 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP200_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | 348 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP200_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
349 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP300_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | 349 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP300_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
350 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | 350 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
351 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | ||
351 | { 0, }, | 352 | { 0, }, |
352 | }; | 353 | }; |
353 | MODULE_DEVICE_TABLE(pci, atiixp_pci_tbl); | 354 | MODULE_DEVICE_TABLE(pci, atiixp_pci_tbl); |
diff --git a/drivers/ide/pci/pdc202xx_old.c b/drivers/ide/pci/pdc202xx_old.c index 6f8f8645b02c..7ce5bf783688 100644 --- a/drivers/ide/pci/pdc202xx_old.c +++ b/drivers/ide/pci/pdc202xx_old.c | |||
@@ -798,7 +798,6 @@ static ide_pci_device_t pdc202xx_chipsets[] __devinitdata = { | |||
798 | .autodma = AUTODMA, | 798 | .autodma = AUTODMA, |
799 | .bootable = OFF_BOARD, | 799 | .bootable = OFF_BOARD, |
800 | .extra = 48, | 800 | .extra = 48, |
801 | .flags = IDEPCI_FLAG_FORCE_PDC, | ||
802 | },{ /* 2 */ | 801 | },{ /* 2 */ |
803 | .name = "PDC20263", | 802 | .name = "PDC20263", |
804 | .init_setup = init_setup_pdc202ata4, | 803 | .init_setup = init_setup_pdc202ata4, |
@@ -819,7 +818,6 @@ static ide_pci_device_t pdc202xx_chipsets[] __devinitdata = { | |||
819 | .autodma = AUTODMA, | 818 | .autodma = AUTODMA, |
820 | .bootable = OFF_BOARD, | 819 | .bootable = OFF_BOARD, |
821 | .extra = 48, | 820 | .extra = 48, |
822 | .flags = IDEPCI_FLAG_FORCE_PDC, | ||
823 | },{ /* 4 */ | 821 | },{ /* 4 */ |
824 | .name = "PDC20267", | 822 | .name = "PDC20267", |
825 | .init_setup = init_setup_pdc202xx, | 823 | .init_setup = init_setup_pdc202xx, |
diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c index 7ebf992e8c2f..462ed3006c30 100644 --- a/drivers/ide/setup-pci.c +++ b/drivers/ide/setup-pci.c | |||
@@ -580,7 +580,6 @@ void ide_pci_setup_ports(struct pci_dev *dev, ide_pci_device_t *d, int pciirq, a | |||
580 | int port; | 580 | int port; |
581 | int at_least_one_hwif_enabled = 0; | 581 | int at_least_one_hwif_enabled = 0; |
582 | ide_hwif_t *hwif, *mate = NULL; | 582 | ide_hwif_t *hwif, *mate = NULL; |
583 | static int secondpdc = 0; | ||
584 | u8 tmp; | 583 | u8 tmp; |
585 | 584 | ||
586 | index->all = 0xf0f0; | 585 | index->all = 0xf0f0; |
@@ -592,21 +591,9 @@ void ide_pci_setup_ports(struct pci_dev *dev, ide_pci_device_t *d, int pciirq, a | |||
592 | for (port = 0; port <= 1; ++port) { | 591 | for (port = 0; port <= 1; ++port) { |
593 | ide_pci_enablebit_t *e = &(d->enablebits[port]); | 592 | ide_pci_enablebit_t *e = &(d->enablebits[port]); |
594 | 593 | ||
595 | /* | ||
596 | * If this is a Promise FakeRaid controller, | ||
597 | * the 2nd controller will be marked as | ||
598 | * disabled while it is actually there and enabled | ||
599 | * by the bios for raid purposes. | ||
600 | * Skip the normal "is it enabled" test for those. | ||
601 | */ | ||
602 | if ((d->flags & IDEPCI_FLAG_FORCE_PDC) && | ||
603 | (secondpdc++==1) && (port==1)) | ||
604 | goto controller_ok; | ||
605 | |||
606 | if (e->reg && (pci_read_config_byte(dev, e->reg, &tmp) || | 594 | if (e->reg && (pci_read_config_byte(dev, e->reg, &tmp) || |
607 | (tmp & e->mask) != e->val)) | 595 | (tmp & e->mask) != e->val)) |
608 | continue; /* port not enabled */ | 596 | continue; /* port not enabled */ |
609 | controller_ok: | ||
610 | 597 | ||
611 | if (d->channels <= port) | 598 | if (d->channels <= port) |
612 | break; | 599 | break; |
diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c index d5890027f8af..48bbf32fd980 100644 --- a/drivers/parport/parport_pc.c +++ b/drivers/parport/parport_pc.c | |||
@@ -97,7 +97,7 @@ static struct superio_struct { /* For Super-IO chips autodetection */ | |||
97 | int io; | 97 | int io; |
98 | int irq; | 98 | int irq; |
99 | int dma; | 99 | int dma; |
100 | } superios[NR_SUPERIOS] __devinitdata = { {0,},}; | 100 | } superios[NR_SUPERIOS] = { {0,},}; |
101 | 101 | ||
102 | static int user_specified; | 102 | static int user_specified; |
103 | #if defined(CONFIG_PARPORT_PC_SUPERIO) || \ | 103 | #if defined(CONFIG_PARPORT_PC_SUPERIO) || \ |
@@ -1557,7 +1557,7 @@ static int __devinit get_superio_dma (struct parport *p) | |||
1557 | return PARPORT_DMA_NONE; | 1557 | return PARPORT_DMA_NONE; |
1558 | } | 1558 | } |
1559 | 1559 | ||
1560 | static int __devinit get_superio_irq (struct parport *p) | 1560 | static int get_superio_irq (struct parport *p) |
1561 | { | 1561 | { |
1562 | int i=0; | 1562 | int i=0; |
1563 | while( (superios[i].io != p->base) && (i<NR_SUPERIOS)) | 1563 | while( (superios[i].io != p->base) && (i<NR_SUPERIOS)) |
@@ -1579,7 +1579,7 @@ static int __devinit get_superio_irq (struct parport *p) | |||
1579 | * this shall always be the case!) | 1579 | * this shall always be the case!) |
1580 | * | 1580 | * |
1581 | */ | 1581 | */ |
1582 | static int __devinit parport_SPP_supported(struct parport *pb) | 1582 | static int parport_SPP_supported(struct parport *pb) |
1583 | { | 1583 | { |
1584 | unsigned char r, w; | 1584 | unsigned char r, w; |
1585 | 1585 | ||
@@ -1660,7 +1660,7 @@ static int __devinit parport_SPP_supported(struct parport *pb) | |||
1660 | * two bits of ECR aren't writable, so we check by writing ECR and | 1660 | * two bits of ECR aren't writable, so we check by writing ECR and |
1661 | * reading it back to see if it's what we expect. | 1661 | * reading it back to see if it's what we expect. |
1662 | */ | 1662 | */ |
1663 | static int __devinit parport_ECR_present(struct parport *pb) | 1663 | static int parport_ECR_present(struct parport *pb) |
1664 | { | 1664 | { |
1665 | struct parport_pc_private *priv = pb->private_data; | 1665 | struct parport_pc_private *priv = pb->private_data; |
1666 | unsigned char r = 0xc; | 1666 | unsigned char r = 0xc; |
@@ -1712,7 +1712,7 @@ static int __devinit parport_ECR_present(struct parport *pb) | |||
1712 | * be misdetected here is rather academic. | 1712 | * be misdetected here is rather academic. |
1713 | */ | 1713 | */ |
1714 | 1714 | ||
1715 | static int __devinit parport_PS2_supported(struct parport *pb) | 1715 | static int parport_PS2_supported(struct parport *pb) |
1716 | { | 1716 | { |
1717 | int ok = 0; | 1717 | int ok = 0; |
1718 | 1718 | ||
@@ -1868,7 +1868,7 @@ static int __devinit parport_ECP_supported(struct parport *pb) | |||
1868 | } | 1868 | } |
1869 | #endif | 1869 | #endif |
1870 | 1870 | ||
1871 | static int __devinit parport_ECPPS2_supported(struct parport *pb) | 1871 | static int parport_ECPPS2_supported(struct parport *pb) |
1872 | { | 1872 | { |
1873 | const struct parport_pc_private *priv = pb->private_data; | 1873 | const struct parport_pc_private *priv = pb->private_data; |
1874 | int result; | 1874 | int result; |
@@ -1886,7 +1886,7 @@ static int __devinit parport_ECPPS2_supported(struct parport *pb) | |||
1886 | 1886 | ||
1887 | /* EPP mode detection */ | 1887 | /* EPP mode detection */ |
1888 | 1888 | ||
1889 | static int __devinit parport_EPP_supported(struct parport *pb) | 1889 | static int parport_EPP_supported(struct parport *pb) |
1890 | { | 1890 | { |
1891 | const struct parport_pc_private *priv = pb->private_data; | 1891 | const struct parport_pc_private *priv = pb->private_data; |
1892 | 1892 | ||
@@ -1931,7 +1931,7 @@ static int __devinit parport_EPP_supported(struct parport *pb) | |||
1931 | return 1; | 1931 | return 1; |
1932 | } | 1932 | } |
1933 | 1933 | ||
1934 | static int __devinit parport_ECPEPP_supported(struct parport *pb) | 1934 | static int parport_ECPEPP_supported(struct parport *pb) |
1935 | { | 1935 | { |
1936 | struct parport_pc_private *priv = pb->private_data; | 1936 | struct parport_pc_private *priv = pb->private_data; |
1937 | int result; | 1937 | int result; |
@@ -2073,7 +2073,7 @@ static int __devinit irq_probe_SPP(struct parport *pb) | |||
2073 | * When ECP is available we can autoprobe for IRQs. | 2073 | * When ECP is available we can autoprobe for IRQs. |
2074 | * NOTE: If we can autoprobe it, we can register the IRQ. | 2074 | * NOTE: If we can autoprobe it, we can register the IRQ. |
2075 | */ | 2075 | */ |
2076 | static int __devinit parport_irq_probe(struct parport *pb) | 2076 | static int parport_irq_probe(struct parport *pb) |
2077 | { | 2077 | { |
2078 | struct parport_pc_private *priv = pb->private_data; | 2078 | struct parport_pc_private *priv = pb->private_data; |
2079 | 2079 | ||
@@ -2779,7 +2779,7 @@ static struct parport_pc_pci { | |||
2779 | /* If set, this is called after probing for ports. If 'failed' | 2779 | /* If set, this is called after probing for ports. If 'failed' |
2780 | * is non-zero we couldn't use any of the ports. */ | 2780 | * is non-zero we couldn't use any of the ports. */ |
2781 | void (*postinit_hook) (struct pci_dev *pdev, int failed); | 2781 | void (*postinit_hook) (struct pci_dev *pdev, int failed); |
2782 | } cards[] __devinitdata = { | 2782 | } cards[] = { |
2783 | /* siig_1p_10x */ { 1, { { 2, 3 }, } }, | 2783 | /* siig_1p_10x */ { 1, { { 2, 3 }, } }, |
2784 | /* siig_2p_10x */ { 2, { { 2, 3 }, { 4, 5 }, } }, | 2784 | /* siig_2p_10x */ { 2, { { 2, 3 }, { 4, 5 }, } }, |
2785 | /* siig_1p_20x */ { 1, { { 0, 1 }, } }, | 2785 | /* siig_1p_20x */ { 1, { { 0, 1 }, } }, |
diff --git a/drivers/pnp/manager.c b/drivers/pnp/manager.c index c4256aa32bcb..6fff109bdab6 100644 --- a/drivers/pnp/manager.c +++ b/drivers/pnp/manager.c | |||
@@ -479,7 +479,7 @@ int pnp_auto_config_dev(struct pnp_dev *dev) | |||
479 | int pnp_start_dev(struct pnp_dev *dev) | 479 | int pnp_start_dev(struct pnp_dev *dev) |
480 | { | 480 | { |
481 | if (!pnp_can_write(dev)) { | 481 | if (!pnp_can_write(dev)) { |
482 | pnp_info("Device %s does not supported activation.", dev->dev.bus_id); | 482 | pnp_info("Device %s does not support activation.", dev->dev.bus_id); |
483 | return -EINVAL; | 483 | return -EINVAL; |
484 | } | 484 | } |
485 | 485 | ||
@@ -503,7 +503,7 @@ int pnp_start_dev(struct pnp_dev *dev) | |||
503 | int pnp_stop_dev(struct pnp_dev *dev) | 503 | int pnp_stop_dev(struct pnp_dev *dev) |
504 | { | 504 | { |
505 | if (!pnp_can_disable(dev)) { | 505 | if (!pnp_can_disable(dev)) { |
506 | pnp_info("Device %s does not supported disabling.", dev->dev.bus_id); | 506 | pnp_info("Device %s does not support disabling.", dev->dev.bus_id); |
507 | return -EINVAL; | 507 | return -EINVAL; |
508 | } | 508 | } |
509 | if (dev->protocol->disable(dev)<0) { | 509 | if (dev->protocol->disable(dev)<0) { |
diff --git a/drivers/serial/m32r_sio.c b/drivers/serial/m32r_sio.c index e9c10c0a30fc..321a40f33b50 100644 --- a/drivers/serial/m32r_sio.c +++ b/drivers/serial/m32r_sio.c | |||
@@ -1057,7 +1057,6 @@ static void m32r_sio_console_write(struct console *co, const char *s, | |||
1057 | { | 1057 | { |
1058 | struct uart_sio_port *up = &m32r_sio_ports[co->index]; | 1058 | struct uart_sio_port *up = &m32r_sio_ports[co->index]; |
1059 | unsigned int ier; | 1059 | unsigned int ier; |
1060 | int i; | ||
1061 | 1060 | ||
1062 | /* | 1061 | /* |
1063 | * First save the UER then disable the interrupts | 1062 | * First save the UER then disable the interrupts |
diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c index 9a6b5b39b88e..387a18a47ac2 100644 --- a/drivers/video/aty/radeon_base.c +++ b/drivers/video/aty/radeon_base.c | |||
@@ -2265,7 +2265,7 @@ static struct bin_attribute edid2_attr = { | |||
2265 | }; | 2265 | }; |
2266 | 2266 | ||
2267 | 2267 | ||
2268 | static int radeonfb_pci_register (struct pci_dev *pdev, | 2268 | static int __devinit radeonfb_pci_register (struct pci_dev *pdev, |
2269 | const struct pci_device_id *ent) | 2269 | const struct pci_device_id *ent) |
2270 | { | 2270 | { |
2271 | struct fb_info *info; | 2271 | struct fb_info *info; |
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index 8d8eadb64853..372aa1776827 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c | |||
@@ -674,13 +674,19 @@ fb_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) | |||
674 | total_size = info->fix.smem_len; | 674 | total_size = info->fix.smem_len; |
675 | 675 | ||
676 | if (p > total_size) | 676 | if (p > total_size) |
677 | return 0; | 677 | return -EFBIG; |
678 | 678 | ||
679 | if (count >= total_size) | 679 | if (count > total_size) { |
680 | err = -EFBIG; | ||
680 | count = total_size; | 681 | count = total_size; |
682 | } | ||
683 | |||
684 | if (count + p > total_size) { | ||
685 | if (!err) | ||
686 | err = -ENOSPC; | ||
681 | 687 | ||
682 | if (count + p > total_size) | ||
683 | count = total_size - p; | 688 | count = total_size - p; |
689 | } | ||
684 | 690 | ||
685 | buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count, | 691 | buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count, |
686 | GFP_KERNEL); | 692 | GFP_KERNEL); |
@@ -722,7 +728,7 @@ fb_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) | |||
722 | 728 | ||
723 | kfree(buffer); | 729 | kfree(buffer); |
724 | 730 | ||
725 | return (err) ? err : cnt; | 731 | return (cnt) ? cnt : err; |
726 | } | 732 | } |
727 | 733 | ||
728 | #ifdef CONFIG_KMOD | 734 | #ifdef CONFIG_KMOD |
diff --git a/drivers/video/savage/savagefb_driver.c b/drivers/video/savage/savagefb_driver.c index 10e6b3aab9ea..0da624e6524f 100644 --- a/drivers/video/savage/savagefb_driver.c +++ b/drivers/video/savage/savagefb_driver.c | |||
@@ -73,7 +73,7 @@ | |||
73 | /* --------------------------------------------------------------------- */ | 73 | /* --------------------------------------------------------------------- */ |
74 | 74 | ||
75 | 75 | ||
76 | static char *mode_option __initdata = NULL; | 76 | static char *mode_option __devinitdata = NULL; |
77 | 77 | ||
78 | #ifdef MODULE | 78 | #ifdef MODULE |
79 | 79 | ||
@@ -1545,7 +1545,7 @@ static int __devinit savage_map_mmio (struct fb_info *info) | |||
1545 | return 0; | 1545 | return 0; |
1546 | } | 1546 | } |
1547 | 1547 | ||
1548 | static void __devinit savage_unmap_mmio (struct fb_info *info) | 1548 | static void savage_unmap_mmio (struct fb_info *info) |
1549 | { | 1549 | { |
1550 | struct savagefb_par *par = info->par; | 1550 | struct savagefb_par *par = info->par; |
1551 | DBG ("savage_unmap_mmio"); | 1551 | DBG ("savage_unmap_mmio"); |
@@ -1597,7 +1597,7 @@ static int __devinit savage_map_video (struct fb_info *info, | |||
1597 | return 0; | 1597 | return 0; |
1598 | } | 1598 | } |
1599 | 1599 | ||
1600 | static void __devinit savage_unmap_video (struct fb_info *info) | 1600 | static void savage_unmap_video (struct fb_info *info) |
1601 | { | 1601 | { |
1602 | struct savagefb_par *par = info->par; | 1602 | struct savagefb_par *par = info->par; |
1603 | 1603 | ||
@@ -1614,7 +1614,7 @@ static void __devinit savage_unmap_video (struct fb_info *info) | |||
1614 | } | 1614 | } |
1615 | } | 1615 | } |
1616 | 1616 | ||
1617 | static int __devinit savage_init_hw (struct savagefb_par *par) | 1617 | static int savage_init_hw (struct savagefb_par *par) |
1618 | { | 1618 | { |
1619 | unsigned char config1, m, n, n1, n2, sr8, cr3f, cr66 = 0, tmp; | 1619 | unsigned char config1, m, n, n1, n2, sr8, cr3f, cr66 = 0, tmp; |
1620 | 1620 | ||