diff options
32 files changed, 83 insertions, 44 deletions
diff --git a/Documentation/filesystems/udf.txt b/Documentation/filesystems/udf.txt index 511b4230c053..fde829a756e6 100644 --- a/Documentation/filesystems/udf.txt +++ b/Documentation/filesystems/udf.txt | |||
@@ -7,8 +7,17 @@ If you encounter problems with reading UDF discs using this driver, | |||
7 | please report them to linux_udf@hpesjro.fc.hp.com, which is the | 7 | please report them to linux_udf@hpesjro.fc.hp.com, which is the |
8 | developer's list. | 8 | developer's list. |
9 | 9 | ||
10 | Write support requires a block driver which supports writing. The current | 10 | Write support requires a block driver which supports writing. Currently |
11 | scsi and ide cdrom drivers do not support writing. | 11 | dvd+rw drives and media support true random sector writes, and so a udf |
12 | filesystem on such devices can be directly mounted read/write. CD-RW | ||
13 | media however, does not support this. Instead the media can be formatted | ||
14 | for packet mode using the utility cdrwtool, then the pktcdvd driver can | ||
15 | be bound to the underlying cd device to provide the required buffering | ||
16 | and read-modify-write cycles to allow the filesystem random sector writes | ||
17 | while providing the hardware with only full packet writes. While not | ||
18 | required for dvd+rw media, use of the pktcdvd driver often enhances | ||
19 | performance due to very poor read-modify-write support supplied internally | ||
20 | by drive firmware. | ||
12 | 21 | ||
13 | ------------------------------------------------------------------------------- | 22 | ------------------------------------------------------------------------------- |
14 | The following mount options are supported: | 23 | The following mount options are supported: |
diff --git a/Documentation/kprobes.txt b/Documentation/kprobes.txt index ba26201d5023..d71fafffce90 100644 --- a/Documentation/kprobes.txt +++ b/Documentation/kprobes.txt | |||
@@ -442,9 +442,10 @@ static int __init kprobe_init(void) | |||
442 | kp.fault_handler = handler_fault; | 442 | kp.fault_handler = handler_fault; |
443 | kp.symbol_name = "do_fork"; | 443 | kp.symbol_name = "do_fork"; |
444 | 444 | ||
445 | if ((ret = register_kprobe(&kp) < 0)) { | 445 | ret = register_kprobe(&kp); |
446 | if (ret < 0) { | ||
446 | printk("register_kprobe failed, returned %d\n", ret); | 447 | printk("register_kprobe failed, returned %d\n", ret); |
447 | return -1; | 448 | return ret; |
448 | } | 449 | } |
449 | printk("kprobe registered\n"); | 450 | printk("kprobe registered\n"); |
450 | return 0; | 451 | return 0; |
diff --git a/arch/ia64/hp/sim/Kconfig b/arch/ia64/hp/sim/Kconfig index 18ccb1266e18..f92306bbedb8 100644 --- a/arch/ia64/hp/sim/Kconfig +++ b/arch/ia64/hp/sim/Kconfig | |||
@@ -13,8 +13,8 @@ config HP_SIMSERIAL_CONSOLE | |||
13 | depends on HP_SIMSERIAL | 13 | depends on HP_SIMSERIAL |
14 | 14 | ||
15 | config HP_SIMSCSI | 15 | config HP_SIMSCSI |
16 | tristate "Simulated SCSI disk" | 16 | bool "Simulated SCSI disk" |
17 | depends on SCSI | 17 | depends on SCSI=y |
18 | 18 | ||
19 | endmenu | 19 | endmenu |
20 | 20 | ||
diff --git a/arch/ia64/hp/sim/hpsim_irq.c b/arch/ia64/hp/sim/hpsim_irq.c index 8145547bb52d..c2f58ff364e7 100644 --- a/arch/ia64/hp/sim/hpsim_irq.c +++ b/arch/ia64/hp/sim/hpsim_irq.c | |||
@@ -27,7 +27,7 @@ hpsim_set_affinity_noop (unsigned int a, cpumask_t b) | |||
27 | } | 27 | } |
28 | 28 | ||
29 | static struct hw_interrupt_type irq_type_hp_sim = { | 29 | static struct hw_interrupt_type irq_type_hp_sim = { |
30 | .typename = "hpsim", | 30 | .name = "hpsim", |
31 | .startup = hpsim_irq_startup, | 31 | .startup = hpsim_irq_startup, |
32 | .shutdown = hpsim_irq_noop, | 32 | .shutdown = hpsim_irq_noop, |
33 | .enable = hpsim_irq_noop, | 33 | .enable = hpsim_irq_noop, |
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index 9bf15fefa7e4..60d64950e3c2 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
@@ -426,7 +426,7 @@ iosapic_end_level_irq (unsigned int irq) | |||
426 | #define iosapic_ack_level_irq nop | 426 | #define iosapic_ack_level_irq nop |
427 | 427 | ||
428 | struct hw_interrupt_type irq_type_iosapic_level = { | 428 | struct hw_interrupt_type irq_type_iosapic_level = { |
429 | .typename = "IO-SAPIC-level", | 429 | .name = "IO-SAPIC-level", |
430 | .startup = iosapic_startup_level_irq, | 430 | .startup = iosapic_startup_level_irq, |
431 | .shutdown = iosapic_shutdown_level_irq, | 431 | .shutdown = iosapic_shutdown_level_irq, |
432 | .enable = iosapic_enable_level_irq, | 432 | .enable = iosapic_enable_level_irq, |
@@ -473,7 +473,7 @@ iosapic_ack_edge_irq (unsigned int irq) | |||
473 | #define iosapic_end_edge_irq nop | 473 | #define iosapic_end_edge_irq nop |
474 | 474 | ||
475 | struct hw_interrupt_type irq_type_iosapic_edge = { | 475 | struct hw_interrupt_type irq_type_iosapic_edge = { |
476 | .typename = "IO-SAPIC-edge", | 476 | .name = "IO-SAPIC-edge", |
477 | .startup = iosapic_startup_edge_irq, | 477 | .startup = iosapic_startup_edge_irq, |
478 | .shutdown = iosapic_disable_edge_irq, | 478 | .shutdown = iosapic_disable_edge_irq, |
479 | .enable = iosapic_enable_edge_irq, | 479 | .enable = iosapic_enable_edge_irq, |
@@ -664,7 +664,7 @@ register_intr (unsigned int gsi, int vector, unsigned char delivery, | |||
664 | printk(KERN_WARNING | 664 | printk(KERN_WARNING |
665 | "%s: changing vector %d from %s to %s\n", | 665 | "%s: changing vector %d from %s to %s\n", |
666 | __FUNCTION__, vector, | 666 | __FUNCTION__, vector, |
667 | idesc->chip->typename, irq_type->typename); | 667 | idesc->chip->name, irq_type->name); |
668 | idesc->chip = irq_type; | 668 | idesc->chip = irq_type; |
669 | } | 669 | } |
670 | return 0; | 670 | return 0; |
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c index f07c0864b0b4..54d55e4d64f7 100644 --- a/arch/ia64/kernel/irq.c +++ b/arch/ia64/kernel/irq.c | |||
@@ -76,7 +76,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
76 | seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]); | 76 | seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]); |
77 | } | 77 | } |
78 | #endif | 78 | #endif |
79 | seq_printf(p, " %14s", irq_desc[i].chip->typename); | 79 | seq_printf(p, " %14s", irq_desc[i].chip->name); |
80 | seq_printf(p, " %s", action->name); | 80 | seq_printf(p, " %s", action->name); |
81 | 81 | ||
82 | for (action=action->next; action; action = action->next) | 82 | for (action=action->next; action; action = action->next) |
@@ -197,7 +197,7 @@ void fixup_irqs(void) | |||
197 | struct pt_regs *old_regs = set_irq_regs(NULL); | 197 | struct pt_regs *old_regs = set_irq_regs(NULL); |
198 | 198 | ||
199 | vectors_in_migration[irq]=0; | 199 | vectors_in_migration[irq]=0; |
200 | __do_IRQ(irq); | 200 | generic_handle_irq(irq); |
201 | set_irq_regs(old_regs); | 201 | set_irq_regs(old_regs); |
202 | } | 202 | } |
203 | } | 203 | } |
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index 9c6dafa2d0df..ba3ba8bc50be 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
@@ -186,7 +186,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs) | |||
186 | ia64_setreg(_IA64_REG_CR_TPR, vector); | 186 | ia64_setreg(_IA64_REG_CR_TPR, vector); |
187 | ia64_srlz_d(); | 187 | ia64_srlz_d(); |
188 | 188 | ||
189 | __do_IRQ(local_vector_to_irq(vector)); | 189 | generic_handle_irq(local_vector_to_irq(vector)); |
190 | 190 | ||
191 | /* | 191 | /* |
192 | * Disable interrupts and send EOI: | 192 | * Disable interrupts and send EOI: |
@@ -242,7 +242,7 @@ void ia64_process_pending_intr(void) | |||
242 | * Probably could shared code. | 242 | * Probably could shared code. |
243 | */ | 243 | */ |
244 | vectors_in_migration[local_vector_to_irq(vector)]=0; | 244 | vectors_in_migration[local_vector_to_irq(vector)]=0; |
245 | __do_IRQ(local_vector_to_irq(vector)); | 245 | generic_handle_irq(local_vector_to_irq(vector)); |
246 | set_irq_regs(old_regs); | 246 | set_irq_regs(old_regs); |
247 | 247 | ||
248 | /* | 248 | /* |
diff --git a/arch/ia64/kernel/irq_lsapic.c b/arch/ia64/kernel/irq_lsapic.c index 1ab58b09f3d7..c2f07beb1759 100644 --- a/arch/ia64/kernel/irq_lsapic.c +++ b/arch/ia64/kernel/irq_lsapic.c | |||
@@ -34,7 +34,7 @@ static int lsapic_retrigger(unsigned int irq) | |||
34 | } | 34 | } |
35 | 35 | ||
36 | struct hw_interrupt_type irq_type_ia64_lsapic = { | 36 | struct hw_interrupt_type irq_type_ia64_lsapic = { |
37 | .typename = "LSAPIC", | 37 | .name = "LSAPIC", |
38 | .startup = lsapic_noop_startup, | 38 | .startup = lsapic_noop_startup, |
39 | .shutdown = lsapic_noop, | 39 | .shutdown = lsapic_noop, |
40 | .enable = lsapic_noop, | 40 | .enable = lsapic_noop, |
diff --git a/arch/ia64/sn/kernel/bte.c b/arch/ia64/sn/kernel/bte.c index 7f73ad4408aa..ff1c55601178 100644 --- a/arch/ia64/sn/kernel/bte.c +++ b/arch/ia64/sn/kernel/bte.c | |||
@@ -381,14 +381,13 @@ bte_result_t bte_unaligned_copy(u64 src, u64 dest, u64 len, u64 mode) | |||
381 | * bcopy to the destination. | 381 | * bcopy to the destination. |
382 | */ | 382 | */ |
383 | 383 | ||
384 | /* Add the leader from source */ | ||
385 | headBteLen = len + (src & L1_CACHE_MASK); | ||
386 | /* Add the trailing bytes from footer. */ | ||
387 | headBteLen += L1_CACHE_BYTES - (headBteLen & L1_CACHE_MASK); | ||
388 | headBteSource = src & ~L1_CACHE_MASK; | ||
389 | headBcopySrcOffset = src & L1_CACHE_MASK; | 384 | headBcopySrcOffset = src & L1_CACHE_MASK; |
390 | headBcopyDest = dest; | 385 | headBcopyDest = dest; |
391 | headBcopyLen = len; | 386 | headBcopyLen = len; |
387 | |||
388 | headBteSource = src - headBcopySrcOffset; | ||
389 | /* Add the leading and trailing bytes from source */ | ||
390 | headBteLen = L1_CACHE_ALIGN(len + headBcopySrcOffset); | ||
392 | } | 391 | } |
393 | 392 | ||
394 | if (headBcopyLen > 0) { | 393 | if (headBcopyLen > 0) { |
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c index 7bb6ad188ba3..0b49459a878a 100644 --- a/arch/ia64/sn/kernel/irq.c +++ b/arch/ia64/sn/kernel/irq.c | |||
@@ -201,7 +201,7 @@ static void sn_set_affinity_irq(unsigned int irq, cpumask_t mask) | |||
201 | } | 201 | } |
202 | 202 | ||
203 | struct hw_interrupt_type irq_type_sn = { | 203 | struct hw_interrupt_type irq_type_sn = { |
204 | .typename = "SN hub", | 204 | .name = "SN hub", |
205 | .startup = sn_startup_irq, | 205 | .startup = sn_startup_irq, |
206 | .shutdown = sn_shutdown_irq, | 206 | .shutdown = sn_shutdown_irq, |
207 | .enable = sn_enable_irq, | 207 | .enable = sn_enable_irq, |
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c index a19338e6215d..e55a75621437 100644 --- a/block/scsi_ioctl.c +++ b/block/scsi_ioctl.c | |||
@@ -286,9 +286,8 @@ static int sg_io(struct file *file, request_queue_t *q, | |||
286 | * fill in request structure | 286 | * fill in request structure |
287 | */ | 287 | */ |
288 | rq->cmd_len = hdr->cmd_len; | 288 | rq->cmd_len = hdr->cmd_len; |
289 | memset(rq->cmd, 0, BLK_MAX_CDB); /* ATAPI hates garbage after CDB */ | ||
289 | memcpy(rq->cmd, cmd, hdr->cmd_len); | 290 | memcpy(rq->cmd, cmd, hdr->cmd_len); |
290 | if (sizeof(rq->cmd) != hdr->cmd_len) | ||
291 | memset(rq->cmd + hdr->cmd_len, 0, sizeof(rq->cmd) - hdr->cmd_len); | ||
292 | 291 | ||
293 | memset(sense, 0, sizeof(sense)); | 292 | memset(sense, 0, sizeof(sense)); |
294 | rq->sense = sense; | 293 | rq->sense = sense; |
diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c index a41b8df24073..c47add8e47df 100644 --- a/drivers/char/ipmi/ipmi_msghandler.c +++ b/drivers/char/ipmi/ipmi_msghandler.c | |||
@@ -2118,7 +2118,7 @@ static int ipmi_bmc_register(ipmi_smi_t intf) | |||
2118 | dev_set_drvdata(&bmc->dev->dev, bmc); | 2118 | dev_set_drvdata(&bmc->dev->dev, bmc); |
2119 | kref_init(&bmc->refcount); | 2119 | kref_init(&bmc->refcount); |
2120 | 2120 | ||
2121 | rv = platform_device_register(bmc->dev); | 2121 | rv = platform_device_add(bmc->dev); |
2122 | mutex_unlock(&ipmidriver_mutex); | 2122 | mutex_unlock(&ipmidriver_mutex); |
2123 | if (rv) { | 2123 | if (rv) { |
2124 | printk(KERN_ERR | 2124 | printk(KERN_ERR |
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c index abc5149e30e8..bb1fac104fda 100644 --- a/drivers/char/ipmi/ipmi_si_intf.c +++ b/drivers/char/ipmi/ipmi_si_intf.c | |||
@@ -2346,7 +2346,7 @@ static int try_smi_init(struct smi_info *new_smi) | |||
2346 | new_smi->dev = &new_smi->pdev->dev; | 2346 | new_smi->dev = &new_smi->pdev->dev; |
2347 | new_smi->dev->driver = &ipmi_driver; | 2347 | new_smi->dev->driver = &ipmi_driver; |
2348 | 2348 | ||
2349 | rv = platform_device_register(new_smi->pdev); | 2349 | rv = platform_device_add(new_smi->pdev); |
2350 | if (rv) { | 2350 | if (rv) { |
2351 | printk(KERN_ERR | 2351 | printk(KERN_ERR |
2352 | "ipmi_si_intf:" | 2352 | "ipmi_si_intf:" |
diff --git a/drivers/firmware/dell_rbu.c b/drivers/firmware/dell_rbu.c index 08b161798443..fc702e40bd43 100644 --- a/drivers/firmware/dell_rbu.c +++ b/drivers/firmware/dell_rbu.c | |||
@@ -705,17 +705,16 @@ static struct bin_attribute rbu_packet_size_attr = { | |||
705 | 705 | ||
706 | static int __init dcdrbu_init(void) | 706 | static int __init dcdrbu_init(void) |
707 | { | 707 | { |
708 | int rc = 0; | 708 | int rc; |
709 | spin_lock_init(&rbu_data.lock); | 709 | spin_lock_init(&rbu_data.lock); |
710 | 710 | ||
711 | init_packet_head(); | 711 | init_packet_head(); |
712 | rbu_device = | 712 | rbu_device = platform_device_register_simple("dell_rbu", -1, NULL, 0); |
713 | platform_device_register_simple("dell_rbu", -1, NULL, 0); | 713 | if (IS_ERR(rbu_device)) { |
714 | if (!rbu_device) { | ||
715 | printk(KERN_ERR | 714 | printk(KERN_ERR |
716 | "dell_rbu:%s:platform_device_register_simple " | 715 | "dell_rbu:%s:platform_device_register_simple " |
717 | "failed\n", __FUNCTION__); | 716 | "failed\n", __FUNCTION__); |
718 | return -EIO; | 717 | return PTR_ERR(rbu_device); |
719 | } | 718 | } |
720 | 719 | ||
721 | rc = sysfs_create_bin_file(&rbu_device->dev.kobj, &rbu_data_attr); | 720 | rc = sysfs_create_bin_file(&rbu_device->dev.kobj, &rbu_data_attr); |
diff --git a/drivers/infiniband/hw/ipath/Kconfig b/drivers/infiniband/hw/ipath/Kconfig index 574a678e7fdd..5ca471ac6542 100644 --- a/drivers/infiniband/hw/ipath/Kconfig +++ b/drivers/infiniband/hw/ipath/Kconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | config INFINIBAND_IPATH | 1 | config INFINIBAND_IPATH |
2 | tristate "QLogic InfiniPath Driver" | 2 | tristate "QLogic InfiniPath Driver" |
3 | depends on PCI_MSI && 64BIT && INFINIBAND | 3 | depends on (PCI_MSI || HT_IRQ) && 64BIT && INFINIBAND |
4 | ---help--- | 4 | ---help--- |
5 | This is a driver for QLogic InfiniPath host channel adapters, | 5 | This is a driver for QLogic InfiniPath host channel adapters, |
6 | including InfiniBand verbs support. This driver allows these | 6 | including InfiniBand verbs support. This driver allows these |
diff --git a/drivers/infiniband/hw/ipath/Makefile b/drivers/infiniband/hw/ipath/Makefile index 5e29cb0095e5..7dc10551cf18 100644 --- a/drivers/infiniband/hw/ipath/Makefile +++ b/drivers/infiniband/hw/ipath/Makefile | |||
@@ -10,8 +10,6 @@ ib_ipath-y := \ | |||
10 | ipath_eeprom.o \ | 10 | ipath_eeprom.o \ |
11 | ipath_file_ops.o \ | 11 | ipath_file_ops.o \ |
12 | ipath_fs.o \ | 12 | ipath_fs.o \ |
13 | ipath_iba6110.o \ | ||
14 | ipath_iba6120.o \ | ||
15 | ipath_init_chip.o \ | 13 | ipath_init_chip.o \ |
16 | ipath_intr.o \ | 14 | ipath_intr.o \ |
17 | ipath_keys.o \ | 15 | ipath_keys.o \ |
@@ -31,5 +29,8 @@ ib_ipath-y := \ | |||
31 | ipath_verbs_mcast.o \ | 29 | ipath_verbs_mcast.o \ |
32 | ipath_verbs.o | 30 | ipath_verbs.o |
33 | 31 | ||
32 | ib_ipath-$(CONFIG_HT_IRQ) += ipath_iba6110.o | ||
33 | ib_ipath-$(CONFIG_PCI_MSI) += ipath_iba6120.o | ||
34 | |||
34 | ib_ipath-$(CONFIG_X86_64) += ipath_wc_x86_64.o | 35 | ib_ipath-$(CONFIG_X86_64) += ipath_wc_x86_64.o |
35 | ib_ipath-$(CONFIG_PPC64) += ipath_wc_ppc64.o | 36 | ib_ipath-$(CONFIG_PPC64) += ipath_wc_ppc64.o |
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c index 09a13c1fc46a..1aeddb48e355 100644 --- a/drivers/infiniband/hw/ipath/ipath_driver.c +++ b/drivers/infiniband/hw/ipath/ipath_driver.c | |||
@@ -390,12 +390,16 @@ static int __devinit ipath_init_one(struct pci_dev *pdev, | |||
390 | 390 | ||
391 | /* setup the chip-specific functions, as early as possible. */ | 391 | /* setup the chip-specific functions, as early as possible. */ |
392 | switch (ent->device) { | 392 | switch (ent->device) { |
393 | #ifdef CONFIG_HT_IRQ | ||
393 | case PCI_DEVICE_ID_INFINIPATH_HT: | 394 | case PCI_DEVICE_ID_INFINIPATH_HT: |
394 | ipath_init_iba6110_funcs(dd); | 395 | ipath_init_iba6110_funcs(dd); |
395 | break; | 396 | break; |
397 | #endif | ||
398 | #ifdef CONFIG_PCI_MSI | ||
396 | case PCI_DEVICE_ID_INFINIPATH_PE800: | 399 | case PCI_DEVICE_ID_INFINIPATH_PE800: |
397 | ipath_init_iba6120_funcs(dd); | 400 | ipath_init_iba6120_funcs(dd); |
398 | break; | 401 | break; |
402 | #endif | ||
399 | default: | 403 | default: |
400 | ipath_dev_err(dd, "Found unknown QLogic deviceid 0x%x, " | 404 | ipath_dev_err(dd, "Found unknown QLogic deviceid 0x%x, " |
401 | "failing\n", ent->device); | 405 | "failing\n", ent->device); |
diff --git a/drivers/parport/parport_ip32.c b/drivers/parport/parport_ip32.c index e3e19277030a..ec44efdbb84e 100644 --- a/drivers/parport/parport_ip32.c +++ b/drivers/parport/parport_ip32.c | |||
@@ -780,7 +780,7 @@ static irqreturn_t parport_ip32_interrupt(int irq, void *dev_id) | |||
780 | enum parport_ip32_irq_mode irq_mode = priv->irq_mode; | 780 | enum parport_ip32_irq_mode irq_mode = priv->irq_mode; |
781 | switch (irq_mode) { | 781 | switch (irq_mode) { |
782 | case PARPORT_IP32_IRQ_FWD: | 782 | case PARPORT_IP32_IRQ_FWD: |
783 | parport_generic_irq(irq, p, regs); | 783 | parport_generic_irq(irq, p); |
784 | break; | 784 | break; |
785 | case PARPORT_IP32_IRQ_HERE: | 785 | case PARPORT_IP32_IRQ_HERE: |
786 | parport_ip32_wakeup(p); | 786 | parport_ip32_wakeup(p); |
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index d2c02df12fdc..3ac4890ce086 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -410,6 +410,7 @@ int scsi_execute_async(struct scsi_device *sdev, const unsigned char *cmd, | |||
410 | goto free_req; | 410 | goto free_req; |
411 | 411 | ||
412 | req->cmd_len = cmd_len; | 412 | req->cmd_len = cmd_len; |
413 | memset(req->cmd, 0, BLK_MAX_CDB); /* ATAPI hates garbage after CDB */ | ||
413 | memcpy(req->cmd, cmd, req->cmd_len); | 414 | memcpy(req->cmd, cmd, req->cmd_len); |
414 | req->sense = sioc->sense; | 415 | req->sense = sioc->sense; |
415 | req->sense_len = 0; | 416 | req->sense_len = 0; |
diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c index b77b30923928..e815b354c09d 100644 --- a/drivers/video/aty/atyfb_base.c +++ b/drivers/video/aty/atyfb_base.c | |||
@@ -406,7 +406,7 @@ static struct { | |||
406 | { PCI_CHIP_MACH64LB, "3D RAGE LT PRO (Mach64 LB, AGP)", 236, 75, 100, 135, ATI_CHIP_264LTPRO }, | 406 | { PCI_CHIP_MACH64LB, "3D RAGE LT PRO (Mach64 LB, AGP)", 236, 75, 100, 135, ATI_CHIP_264LTPRO }, |
407 | { PCI_CHIP_MACH64LD, "3D RAGE LT PRO (Mach64 LD, AGP)", 230, 100, 100, 135, ATI_CHIP_264LTPRO }, | 407 | { PCI_CHIP_MACH64LD, "3D RAGE LT PRO (Mach64 LD, AGP)", 230, 100, 100, 135, ATI_CHIP_264LTPRO }, |
408 | { PCI_CHIP_MACH64LI, "3D RAGE LT PRO (Mach64 LI, PCI)", 230, 100, 100, 135, ATI_CHIP_264LTPRO | M64F_G3_PB_1_1 | M64F_G3_PB_1024x768 }, | 408 | { PCI_CHIP_MACH64LI, "3D RAGE LT PRO (Mach64 LI, PCI)", 230, 100, 100, 135, ATI_CHIP_264LTPRO | M64F_G3_PB_1_1 | M64F_G3_PB_1024x768 }, |
409 | { PCI_CHIP_MACH64LP, "3D RAGE LT PRO (Mach64 LP, PCI)", 230, 100, 100, 135, ATI_CHIP_264LTPRO }, | 409 | { PCI_CHIP_MACH64LP, "3D RAGE LT PRO (Mach64 LP, PCI)", 230, 100, 100, 135, ATI_CHIP_264LTPRO | M64F_G3_PB_1024x768 }, |
410 | { PCI_CHIP_MACH64LQ, "3D RAGE LT PRO (Mach64 LQ, PCI)", 230, 100, 100, 135, ATI_CHIP_264LTPRO }, | 410 | { PCI_CHIP_MACH64LQ, "3D RAGE LT PRO (Mach64 LQ, PCI)", 230, 100, 100, 135, ATI_CHIP_264LTPRO }, |
411 | 411 | ||
412 | { PCI_CHIP_MACH64GM, "3D RAGE XL (Mach64 GM, AGP 2x)", 230, 83, 63, 135, ATI_CHIP_264XL }, | 412 | { PCI_CHIP_MACH64GM, "3D RAGE XL (Mach64 GM, AGP 2x)", 230, 83, 63, 135, ATI_CHIP_264XL }, |
diff --git a/drivers/video/pnx4008/pnxrgbfb.c b/drivers/video/pnx4008/pnxrgbfb.c index 7d9453c91a42..f29e66e2d774 100644 --- a/drivers/video/pnx4008/pnxrgbfb.c +++ b/drivers/video/pnx4008/pnxrgbfb.c | |||
@@ -154,7 +154,8 @@ static int __devinit rgbfb_probe(struct platform_device *pdev) | |||
154 | goto err1; | 154 | goto err1; |
155 | } | 155 | } |
156 | 156 | ||
157 | if (!fb_get_options("pnxrgbfb", &option) && !strcmp(option, "nocursor")) | 157 | if (!fb_get_options("pnxrgbfb", &option) && option && |
158 | !strcmp(option, "nocursor")) | ||
158 | rgbfb_ops.fb_cursor = no_cursor; | 159 | rgbfb_ops.fb_cursor = no_cursor; |
159 | 160 | ||
160 | info->node = -1; | 161 | info->node = -1; |
@@ -191,7 +192,7 @@ err: | |||
191 | 192 | ||
192 | static struct platform_driver rgbfb_driver = { | 193 | static struct platform_driver rgbfb_driver = { |
193 | .driver = { | 194 | .driver = { |
194 | .name = "rgbfb", | 195 | .name = "pnx4008-rgbfb", |
195 | }, | 196 | }, |
196 | .probe = rgbfb_probe, | 197 | .probe = rgbfb_probe, |
197 | .remove = rgbfb_remove, | 198 | .remove = rgbfb_remove, |
diff --git a/drivers/video/pnx4008/sdum.c b/drivers/video/pnx4008/sdum.c index 51f0ecc2a511..d23bf0d659b6 100644 --- a/drivers/video/pnx4008/sdum.c +++ b/drivers/video/pnx4008/sdum.c | |||
@@ -848,7 +848,7 @@ static int sdum_remove(struct platform_device *pdev) | |||
848 | 848 | ||
849 | static struct platform_driver sdum_driver = { | 849 | static struct platform_driver sdum_driver = { |
850 | .driver = { | 850 | .driver = { |
851 | .name = "sdum", | 851 | .name = "pnx4008-sdum", |
852 | }, | 852 | }, |
853 | .probe = sdum_probe, | 853 | .probe = sdum_probe, |
854 | .remove = sdum_remove, | 854 | .remove = sdum_remove, |
diff --git a/fs/Kconfig b/fs/Kconfig index 133dcc8a4150..7b1511d50b05 100644 --- a/fs/Kconfig +++ b/fs/Kconfig | |||
@@ -2060,8 +2060,7 @@ config CODA_FS_OLD_API | |||
2060 | For most cases you probably want to say N. | 2060 | For most cases you probably want to say N. |
2061 | 2061 | ||
2062 | config AFS_FS | 2062 | config AFS_FS |
2063 | # for fs/nls/Config.in | 2063 | tristate "Andrew File System support (AFS) (EXPERIMENTAL)" |
2064 | tristate "Andrew File System support (AFS) (Experimental)" | ||
2065 | depends on INET && EXPERIMENTAL | 2064 | depends on INET && EXPERIMENTAL |
2066 | select RXRPC | 2065 | select RXRPC |
2067 | help | 2066 | help |
diff --git a/fs/ecryptfs/dentry.c b/fs/ecryptfs/dentry.c index 0b9992ab990f..52d1e36dc746 100644 --- a/fs/ecryptfs/dentry.c +++ b/fs/ecryptfs/dentry.c | |||
@@ -57,6 +57,12 @@ static int ecryptfs_d_revalidate(struct dentry *dentry, struct nameidata *nd) | |||
57 | rc = lower_dentry->d_op->d_revalidate(lower_dentry, nd); | 57 | rc = lower_dentry->d_op->d_revalidate(lower_dentry, nd); |
58 | nd->dentry = dentry_save; | 58 | nd->dentry = dentry_save; |
59 | nd->mnt = vfsmount_save; | 59 | nd->mnt = vfsmount_save; |
60 | if (dentry->d_inode) { | ||
61 | struct inode *lower_inode = | ||
62 | ecryptfs_inode_to_lower(dentry->d_inode); | ||
63 | |||
64 | ecryptfs_copy_attr_all(dentry->d_inode, lower_inode); | ||
65 | } | ||
60 | out: | 66 | out: |
61 | return rc; | 67 | return rc; |
62 | } | 68 | } |
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c index ff4865d24f0f..dfcc68484f47 100644 --- a/fs/ecryptfs/inode.c +++ b/fs/ecryptfs/inode.c | |||
@@ -470,6 +470,7 @@ out_lock: | |||
470 | unlock_dir(lower_dir_dentry); | 470 | unlock_dir(lower_dir_dentry); |
471 | dput(lower_new_dentry); | 471 | dput(lower_new_dentry); |
472 | dput(lower_old_dentry); | 472 | dput(lower_old_dentry); |
473 | d_drop(lower_old_dentry); | ||
473 | d_drop(new_dentry); | 474 | d_drop(new_dentry); |
474 | d_drop(old_dentry); | 475 | d_drop(old_dentry); |
475 | return rc; | 476 | return rc; |
@@ -484,7 +485,7 @@ static int ecryptfs_unlink(struct inode *dir, struct dentry *dentry) | |||
484 | lock_parent(lower_dentry); | 485 | lock_parent(lower_dentry); |
485 | rc = vfs_unlink(lower_dir_inode, lower_dentry); | 486 | rc = vfs_unlink(lower_dir_inode, lower_dentry); |
486 | if (rc) { | 487 | if (rc) { |
487 | ecryptfs_printk(KERN_ERR, "Error in vfs_unlink\n"); | 488 | printk(KERN_ERR "Error in vfs_unlink; rc = [%d]\n", rc); |
488 | goto out_unlock; | 489 | goto out_unlock; |
489 | } | 490 | } |
490 | ecryptfs_copy_attr_times(dir, lower_dir_inode); | 491 | ecryptfs_copy_attr_times(dir, lower_dir_inode); |
@@ -630,6 +631,8 @@ ecryptfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
630 | ecryptfs_copy_attr_all(old_dir, lower_old_dir_dentry->d_inode); | 631 | ecryptfs_copy_attr_all(old_dir, lower_old_dir_dentry->d_inode); |
631 | out_lock: | 632 | out_lock: |
632 | unlock_rename(lower_old_dir_dentry, lower_new_dir_dentry); | 633 | unlock_rename(lower_old_dir_dentry, lower_new_dir_dentry); |
634 | dput(lower_new_dentry->d_parent); | ||
635 | dput(lower_old_dentry->d_parent); | ||
633 | dput(lower_new_dentry); | 636 | dput(lower_new_dentry); |
634 | dput(lower_old_dentry); | 637 | dput(lower_old_dentry); |
635 | return rc; | 638 | return rc; |
diff --git a/fs/fat/file.c b/fs/fat/file.c index 8337451e7897..0aa813d944a6 100644 --- a/fs/fat/file.c +++ b/fs/fat/file.c | |||
@@ -303,7 +303,17 @@ void fat_truncate(struct inode *inode) | |||
303 | fat_flush_inodes(inode->i_sb, inode, NULL); | 303 | fat_flush_inodes(inode->i_sb, inode, NULL); |
304 | } | 304 | } |
305 | 305 | ||
306 | int fat_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) | ||
307 | { | ||
308 | struct inode *inode = dentry->d_inode; | ||
309 | generic_fillattr(inode, stat); | ||
310 | stat->blksize = MSDOS_SB(inode->i_sb)->cluster_size; | ||
311 | return 0; | ||
312 | } | ||
313 | EXPORT_SYMBOL_GPL(fat_getattr); | ||
314 | |||
306 | struct inode_operations fat_file_inode_operations = { | 315 | struct inode_operations fat_file_inode_operations = { |
307 | .truncate = fat_truncate, | 316 | .truncate = fat_truncate, |
308 | .setattr = fat_notify_change, | 317 | .setattr = fat_notify_change, |
318 | .getattr = fat_getattr, | ||
309 | }; | 319 | }; |
diff --git a/fs/hfs/super.c b/fs/hfs/super.c index d43b4fcc8ad3..85b17b3fa4a0 100644 --- a/fs/hfs/super.c +++ b/fs/hfs/super.c | |||
@@ -390,11 +390,13 @@ static int hfs_fill_super(struct super_block *sb, void *data, int silent) | |||
390 | hfs_find_exit(&fd); | 390 | hfs_find_exit(&fd); |
391 | goto bail_no_root; | 391 | goto bail_no_root; |
392 | } | 392 | } |
393 | res = -EINVAL; | ||
393 | root_inode = hfs_iget(sb, &fd.search_key->cat, &rec); | 394 | root_inode = hfs_iget(sb, &fd.search_key->cat, &rec); |
394 | hfs_find_exit(&fd); | 395 | hfs_find_exit(&fd); |
395 | if (!root_inode) | 396 | if (!root_inode) |
396 | goto bail_no_root; | 397 | goto bail_no_root; |
397 | 398 | ||
399 | res = -ENOMEM; | ||
398 | sb->s_root = d_alloc_root(root_inode); | 400 | sb->s_root = d_alloc_root(root_inode); |
399 | if (!sb->s_root) | 401 | if (!sb->s_root) |
400 | goto bail_iput; | 402 | goto bail_iput; |
diff --git a/fs/msdos/namei.c b/fs/msdos/namei.c index b0f01b3b0536..452461955cbd 100644 --- a/fs/msdos/namei.c +++ b/fs/msdos/namei.c | |||
@@ -654,6 +654,7 @@ static struct inode_operations msdos_dir_inode_operations = { | |||
654 | .rmdir = msdos_rmdir, | 654 | .rmdir = msdos_rmdir, |
655 | .rename = msdos_rename, | 655 | .rename = msdos_rename, |
656 | .setattr = fat_notify_change, | 656 | .setattr = fat_notify_change, |
657 | .getattr = fat_getattr, | ||
657 | }; | 658 | }; |
658 | 659 | ||
659 | static int msdos_fill_super(struct super_block *sb, void *data, int silent) | 660 | static int msdos_fill_super(struct super_block *sb, void *data, int silent) |
diff --git a/fs/vfat/namei.c b/fs/vfat/namei.c index edb711ff7b05..0afd745a37cd 100644 --- a/fs/vfat/namei.c +++ b/fs/vfat/namei.c | |||
@@ -1004,6 +1004,7 @@ static struct inode_operations vfat_dir_inode_operations = { | |||
1004 | .rmdir = vfat_rmdir, | 1004 | .rmdir = vfat_rmdir, |
1005 | .rename = vfat_rename, | 1005 | .rename = vfat_rename, |
1006 | .setattr = fat_notify_change, | 1006 | .setattr = fat_notify_change, |
1007 | .getattr = fat_getattr, | ||
1007 | }; | 1008 | }; |
1008 | 1009 | ||
1009 | static int vfat_fill_super(struct super_block *sb, void *data, int silent) | 1010 | static int vfat_fill_super(struct super_block *sb, void *data, int silent) |
diff --git a/include/linux/msdos_fs.h b/include/linux/msdos_fs.h index ce6c85815cbd..24a9ef1506b6 100644 --- a/include/linux/msdos_fs.h +++ b/include/linux/msdos_fs.h | |||
@@ -402,6 +402,8 @@ extern const struct file_operations fat_file_operations; | |||
402 | extern struct inode_operations fat_file_inode_operations; | 402 | extern struct inode_operations fat_file_inode_operations; |
403 | extern int fat_notify_change(struct dentry * dentry, struct iattr * attr); | 403 | extern int fat_notify_change(struct dentry * dentry, struct iattr * attr); |
404 | extern void fat_truncate(struct inode *inode); | 404 | extern void fat_truncate(struct inode *inode); |
405 | extern int fat_getattr(struct vfsmount *mnt, struct dentry *dentry, | ||
406 | struct kstat *stat); | ||
405 | 407 | ||
406 | /* fat/inode.c */ | 408 | /* fat/inode.c */ |
407 | extern void fat_attach(struct inode *inode, loff_t i_pos); | 409 | extern void fat_attach(struct inode *inode, loff_t i_pos); |
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 2d0dc3efe813..ebfd24a41858 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
@@ -233,6 +233,8 @@ void irq_chip_set_defaults(struct irq_chip *chip) | |||
233 | chip->shutdown = chip->disable; | 233 | chip->shutdown = chip->disable; |
234 | if (!chip->name) | 234 | if (!chip->name) |
235 | chip->name = chip->typename; | 235 | chip->name = chip->typename; |
236 | if (!chip->end) | ||
237 | chip->end = dummy_irq_chip.end; | ||
236 | } | 238 | } |
237 | 239 | ||
238 | static inline void mask_ack_irq(struct irq_desc *desc, int irq) | 240 | static inline void mask_ack_irq(struct irq_desc *desc, int irq) |
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 7dc6aa745166..86897ee792d6 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c | |||
@@ -181,14 +181,13 @@ static struct vm_struct *__get_vm_area_node(unsigned long size, unsigned long fl | |||
181 | } | 181 | } |
182 | addr = ALIGN(start, align); | 182 | addr = ALIGN(start, align); |
183 | size = PAGE_ALIGN(size); | 183 | size = PAGE_ALIGN(size); |
184 | if (unlikely(!size)) | ||
185 | return NULL; | ||
184 | 186 | ||
185 | area = kmalloc_node(sizeof(*area), gfp_mask & GFP_LEVEL_MASK, node); | 187 | area = kmalloc_node(sizeof(*area), gfp_mask & GFP_LEVEL_MASK, node); |
186 | if (unlikely(!area)) | 188 | if (unlikely(!area)) |
187 | return NULL; | 189 | return NULL; |
188 | 190 | ||
189 | if (unlikely(!size)) | ||
190 | return NULL; | ||
191 | |||
192 | /* | 191 | /* |
193 | * We always allocate a guard page. | 192 | * We always allocate a guard page. |
194 | */ | 193 | */ |