diff options
| -rw-r--r-- | drivers/char/agp/intel-agp.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 13 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 16 | ||||
| -rw-r--r-- | drivers/ide/ide-cs.c | 1 | ||||
| -rw-r--r-- | drivers/net/gianfar.c | 2 | ||||
| -rw-r--r-- | fs/namei.c | 22 | ||||
| -rw-r--r-- | security/integrity/ima/ima_main.c | 6 |
7 files changed, 53 insertions, 15 deletions
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index 8c9d50db5c3a..c58557790585 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c | |||
| @@ -49,6 +49,7 @@ | |||
| 49 | #define PCI_DEVICE_ID_INTEL_IGDNG_D_HB 0x0040 | 49 | #define PCI_DEVICE_ID_INTEL_IGDNG_D_HB 0x0040 |
| 50 | #define PCI_DEVICE_ID_INTEL_IGDNG_D_IG 0x0042 | 50 | #define PCI_DEVICE_ID_INTEL_IGDNG_D_IG 0x0042 |
| 51 | #define PCI_DEVICE_ID_INTEL_IGDNG_M_HB 0x0044 | 51 | #define PCI_DEVICE_ID_INTEL_IGDNG_M_HB 0x0044 |
| 52 | #define PCI_DEVICE_ID_INTEL_IGDNG_MA_HB 0x0062 | ||
| 52 | #define PCI_DEVICE_ID_INTEL_IGDNG_M_IG 0x0046 | 53 | #define PCI_DEVICE_ID_INTEL_IGDNG_M_IG 0x0046 |
| 53 | 54 | ||
| 54 | /* cover 915 and 945 variants */ | 55 | /* cover 915 and 945 variants */ |
| @@ -81,7 +82,8 @@ | |||
| 81 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB || \ | 82 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB || \ |
| 82 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G41_HB || \ | 83 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G41_HB || \ |
| 83 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_D_HB || \ | 84 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_D_HB || \ |
| 84 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_M_HB) | 85 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_M_HB || \ |
| 86 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_MA_HB) | ||
| 85 | 87 | ||
| 86 | extern int agp_memory_reserved; | 88 | extern int agp_memory_reserved; |
| 87 | 89 | ||
| @@ -1216,6 +1218,7 @@ static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size) | |||
| 1216 | case PCI_DEVICE_ID_INTEL_G41_HB: | 1218 | case PCI_DEVICE_ID_INTEL_G41_HB: |
| 1217 | case PCI_DEVICE_ID_INTEL_IGDNG_D_HB: | 1219 | case PCI_DEVICE_ID_INTEL_IGDNG_D_HB: |
| 1218 | case PCI_DEVICE_ID_INTEL_IGDNG_M_HB: | 1220 | case PCI_DEVICE_ID_INTEL_IGDNG_M_HB: |
| 1221 | case PCI_DEVICE_ID_INTEL_IGDNG_MA_HB: | ||
| 1219 | *gtt_offset = *gtt_size = MB(2); | 1222 | *gtt_offset = *gtt_size = MB(2); |
| 1220 | break; | 1223 | break; |
| 1221 | default: | 1224 | default: |
| @@ -2195,6 +2198,8 @@ static const struct intel_driver_description { | |||
| 2195 | "IGDNG/D", NULL, &intel_i965_driver }, | 2198 | "IGDNG/D", NULL, &intel_i965_driver }, |
| 2196 | { PCI_DEVICE_ID_INTEL_IGDNG_M_HB, PCI_DEVICE_ID_INTEL_IGDNG_M_IG, 0, | 2199 | { PCI_DEVICE_ID_INTEL_IGDNG_M_HB, PCI_DEVICE_ID_INTEL_IGDNG_M_IG, 0, |
| 2197 | "IGDNG/M", NULL, &intel_i965_driver }, | 2200 | "IGDNG/M", NULL, &intel_i965_driver }, |
| 2201 | { PCI_DEVICE_ID_INTEL_IGDNG_MA_HB, PCI_DEVICE_ID_INTEL_IGDNG_M_IG, 0, | ||
| 2202 | "IGDNG/MA", NULL, &intel_i965_driver }, | ||
| 2198 | { 0, 0, 0, NULL, NULL, NULL } | 2203 | { 0, 0, 0, NULL, NULL, NULL } |
| 2199 | }; | 2204 | }; |
| 2200 | 2205 | ||
| @@ -2398,6 +2403,7 @@ static struct pci_device_id agp_intel_pci_table[] = { | |||
| 2398 | ID(PCI_DEVICE_ID_INTEL_G41_HB), | 2403 | ID(PCI_DEVICE_ID_INTEL_G41_HB), |
| 2399 | ID(PCI_DEVICE_ID_INTEL_IGDNG_D_HB), | 2404 | ID(PCI_DEVICE_ID_INTEL_IGDNG_D_HB), |
| 2400 | ID(PCI_DEVICE_ID_INTEL_IGDNG_M_HB), | 2405 | ID(PCI_DEVICE_ID_INTEL_IGDNG_M_HB), |
| 2406 | ID(PCI_DEVICE_ID_INTEL_IGDNG_MA_HB), | ||
| 2401 | { } | 2407 | { } |
| 2402 | }; | 2408 | }; |
| 2403 | 2409 | ||
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 0c07a755b3a3..7edb5b9d5792 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -2267,8 +2267,6 @@ i915_gem_object_get_fence_reg(struct drm_gem_object *obj) | |||
| 2267 | fence_list) { | 2267 | fence_list) { |
| 2268 | old_obj = old_obj_priv->obj; | 2268 | old_obj = old_obj_priv->obj; |
| 2269 | 2269 | ||
| 2270 | reg = &dev_priv->fence_regs[old_obj_priv->fence_reg]; | ||
| 2271 | |||
| 2272 | if (old_obj_priv->pin_count) | 2270 | if (old_obj_priv->pin_count) |
| 2273 | continue; | 2271 | continue; |
| 2274 | 2272 | ||
| @@ -2290,8 +2288,11 @@ i915_gem_object_get_fence_reg(struct drm_gem_object *obj) | |||
| 2290 | */ | 2288 | */ |
| 2291 | i915_gem_object_flush_gpu_write_domain(old_obj); | 2289 | i915_gem_object_flush_gpu_write_domain(old_obj); |
| 2292 | ret = i915_gem_object_wait_rendering(old_obj); | 2290 | ret = i915_gem_object_wait_rendering(old_obj); |
| 2293 | if (ret != 0) | 2291 | if (ret != 0) { |
| 2292 | drm_gem_object_unreference(old_obj); | ||
| 2294 | return ret; | 2293 | return ret; |
| 2294 | } | ||
| 2295 | |||
| 2295 | break; | 2296 | break; |
| 2296 | } | 2297 | } |
| 2297 | 2298 | ||
| @@ -2299,10 +2300,14 @@ i915_gem_object_get_fence_reg(struct drm_gem_object *obj) | |||
| 2299 | * Zap this virtual mapping so we can set up a fence again | 2300 | * Zap this virtual mapping so we can set up a fence again |
| 2300 | * for this object next time we need it. | 2301 | * for this object next time we need it. |
| 2301 | */ | 2302 | */ |
| 2302 | i915_gem_release_mmap(reg->obj); | 2303 | i915_gem_release_mmap(old_obj); |
| 2304 | |||
| 2303 | i = old_obj_priv->fence_reg; | 2305 | i = old_obj_priv->fence_reg; |
| 2306 | reg = &dev_priv->fence_regs[i]; | ||
| 2307 | |||
| 2304 | old_obj_priv->fence_reg = I915_FENCE_REG_NONE; | 2308 | old_obj_priv->fence_reg = I915_FENCE_REG_NONE; |
| 2305 | list_del_init(&old_obj_priv->fence_list); | 2309 | list_del_init(&old_obj_priv->fence_list); |
| 2310 | |||
| 2306 | drm_gem_object_unreference(old_obj); | 2311 | drm_gem_object_unreference(old_obj); |
| 2307 | } | 2312 | } |
| 2308 | 2313 | ||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 3fadb5358858..748ed50c55ca 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
| @@ -2005,7 +2005,21 @@ static void igd_enable_cxsr(struct drm_device *dev, unsigned long clock, | |||
| 2005 | return; | 2005 | return; |
| 2006 | } | 2006 | } |
| 2007 | 2007 | ||
| 2008 | const static int latency_ns = 3000; /* default for non-igd platforms */ | 2008 | /* |
| 2009 | * Latency for FIFO fetches is dependent on several factors: | ||
| 2010 | * - memory configuration (speed, channels) | ||
| 2011 | * - chipset | ||
| 2012 | * - current MCH state | ||
| 2013 | * It can be fairly high in some situations, so here we assume a fairly | ||
| 2014 | * pessimal value. It's a tradeoff between extra memory fetches (if we | ||
| 2015 | * set this value too high, the FIFO will fetch frequently to stay full) | ||
| 2016 | * and power consumption (set it too low to save power and we might see | ||
| 2017 | * FIFO underruns and display "flicker"). | ||
| 2018 | * | ||
| 2019 | * A value of 5us seems to be a good balance; safe for very low end | ||
| 2020 | * platforms but not overly aggressive on lower latency configs. | ||
| 2021 | */ | ||
| 2022 | const static int latency_ns = 5000; | ||
| 2009 | 2023 | ||
| 2010 | static int intel_get_fifo_size(struct drm_device *dev, int plane) | 2024 | static int intel_get_fifo_size(struct drm_device *dev, int plane) |
| 2011 | { | 2025 | { |
diff --git a/drivers/ide/ide-cs.c b/drivers/ide/ide-cs.c index 527908ff298c..063b933d864a 100644 --- a/drivers/ide/ide-cs.c +++ b/drivers/ide/ide-cs.c | |||
| @@ -408,6 +408,7 @@ static struct pcmcia_device_id ide_ids[] = { | |||
| 408 | PCMCIA_DEVICE_PROD_ID123("PCMCIA", "IDE CARD", "F1", 0x281f1c5d, 0x1907960c, 0xf7fde8b9), | 408 | PCMCIA_DEVICE_PROD_ID123("PCMCIA", "IDE CARD", "F1", 0x281f1c5d, 0x1907960c, 0xf7fde8b9), |
| 409 | PCMCIA_DEVICE_PROD_ID12("ARGOSY", "CD-ROM", 0x78f308dc, 0x66536591), | 409 | PCMCIA_DEVICE_PROD_ID12("ARGOSY", "CD-ROM", 0x78f308dc, 0x66536591), |
| 410 | PCMCIA_DEVICE_PROD_ID12("ARGOSY", "PnPIDE", 0x78f308dc, 0x0c694728), | 410 | PCMCIA_DEVICE_PROD_ID12("ARGOSY", "PnPIDE", 0x78f308dc, 0x0c694728), |
| 411 | PCMCIA_DEVICE_PROD_ID12("CNF ", "CD-ROM", 0x46d7db81, 0x66536591), | ||
| 411 | PCMCIA_DEVICE_PROD_ID12("CNF CD-M", "CD-ROM", 0x7d93b852, 0x66536591), | 412 | PCMCIA_DEVICE_PROD_ID12("CNF CD-M", "CD-ROM", 0x7d93b852, 0x66536591), |
| 412 | PCMCIA_DEVICE_PROD_ID12("Creative Technology Ltd.", "PCMCIA CD-ROM Interface Card", 0xff8c8a45, 0xfe8020c4), | 413 | PCMCIA_DEVICE_PROD_ID12("Creative Technology Ltd.", "PCMCIA CD-ROM Interface Card", 0xff8c8a45, 0xfe8020c4), |
| 413 | PCMCIA_DEVICE_PROD_ID12("Digital Equipment Corporation.", "Digital Mobile Media CD-ROM", 0x17692a66, 0xef1dcbde), | 414 | PCMCIA_DEVICE_PROD_ID12("Digital Equipment Corporation.", "Digital Mobile Media CD-ROM", 0x17692a66, 0xef1dcbde), |
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index 24f7ca5e17de..a00ec639c380 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
| @@ -491,7 +491,7 @@ static int gfar_remove(struct of_device *ofdev) | |||
| 491 | 491 | ||
| 492 | dev_set_drvdata(&ofdev->dev, NULL); | 492 | dev_set_drvdata(&ofdev->dev, NULL); |
| 493 | 493 | ||
| 494 | unregister_netdev(dev); | 494 | unregister_netdev(priv->ndev); |
| 495 | iounmap(priv->regs); | 495 | iounmap(priv->regs); |
| 496 | free_netdev(priv->ndev); | 496 | free_netdev(priv->ndev); |
| 497 | 497 | ||
diff --git a/fs/namei.c b/fs/namei.c index f3c5b278895a..1f13751693a5 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
| @@ -1542,28 +1542,31 @@ int may_open(struct path *path, int acc_mode, int flag) | |||
| 1542 | * An append-only file must be opened in append mode for writing. | 1542 | * An append-only file must be opened in append mode for writing. |
| 1543 | */ | 1543 | */ |
| 1544 | if (IS_APPEND(inode)) { | 1544 | if (IS_APPEND(inode)) { |
| 1545 | error = -EPERM; | ||
| 1545 | if ((flag & FMODE_WRITE) && !(flag & O_APPEND)) | 1546 | if ((flag & FMODE_WRITE) && !(flag & O_APPEND)) |
| 1546 | return -EPERM; | 1547 | goto err_out; |
| 1547 | if (flag & O_TRUNC) | 1548 | if (flag & O_TRUNC) |
| 1548 | return -EPERM; | 1549 | goto err_out; |
| 1549 | } | 1550 | } |
| 1550 | 1551 | ||
| 1551 | /* O_NOATIME can only be set by the owner or superuser */ | 1552 | /* O_NOATIME can only be set by the owner or superuser */ |
| 1552 | if (flag & O_NOATIME) | 1553 | if (flag & O_NOATIME) |
| 1553 | if (!is_owner_or_cap(inode)) | 1554 | if (!is_owner_or_cap(inode)) { |
| 1554 | return -EPERM; | 1555 | error = -EPERM; |
| 1556 | goto err_out; | ||
| 1557 | } | ||
| 1555 | 1558 | ||
| 1556 | /* | 1559 | /* |
| 1557 | * Ensure there are no outstanding leases on the file. | 1560 | * Ensure there are no outstanding leases on the file. |
| 1558 | */ | 1561 | */ |
| 1559 | error = break_lease(inode, flag); | 1562 | error = break_lease(inode, flag); |
| 1560 | if (error) | 1563 | if (error) |
| 1561 | return error; | 1564 | goto err_out; |
| 1562 | 1565 | ||
| 1563 | if (flag & O_TRUNC) { | 1566 | if (flag & O_TRUNC) { |
| 1564 | error = get_write_access(inode); | 1567 | error = get_write_access(inode); |
| 1565 | if (error) | 1568 | if (error) |
| 1566 | return error; | 1569 | goto err_out; |
| 1567 | 1570 | ||
| 1568 | /* | 1571 | /* |
| 1569 | * Refuse to truncate files with mandatory locks held on them. | 1572 | * Refuse to truncate files with mandatory locks held on them. |
| @@ -1581,12 +1584,17 @@ int may_open(struct path *path, int acc_mode, int flag) | |||
| 1581 | } | 1584 | } |
| 1582 | put_write_access(inode); | 1585 | put_write_access(inode); |
| 1583 | if (error) | 1586 | if (error) |
| 1584 | return error; | 1587 | goto err_out; |
| 1585 | } else | 1588 | } else |
| 1586 | if (flag & FMODE_WRITE) | 1589 | if (flag & FMODE_WRITE) |
| 1587 | vfs_dq_init(inode); | 1590 | vfs_dq_init(inode); |
| 1588 | 1591 | ||
| 1589 | return 0; | 1592 | return 0; |
| 1593 | err_out: | ||
| 1594 | ima_counts_put(path, acc_mode ? | ||
| 1595 | acc_mode & (MAY_READ | MAY_WRITE | MAY_EXEC) : | ||
| 1596 | ACC_MODE(flag) & (MAY_READ | MAY_WRITE)); | ||
| 1597 | return error; | ||
| 1590 | } | 1598 | } |
| 1591 | 1599 | ||
| 1592 | /* | 1600 | /* |
diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c index 4732f5e5d127..b85e61bcf246 100644 --- a/security/integrity/ima/ima_main.c +++ b/security/integrity/ima/ima_main.c | |||
| @@ -249,7 +249,11 @@ void ima_counts_put(struct path *path, int mask) | |||
| 249 | struct inode *inode = path->dentry->d_inode; | 249 | struct inode *inode = path->dentry->d_inode; |
| 250 | struct ima_iint_cache *iint; | 250 | struct ima_iint_cache *iint; |
| 251 | 251 | ||
| 252 | if (!ima_initialized || !S_ISREG(inode->i_mode)) | 252 | /* The inode may already have been freed, freeing the iint |
| 253 | * with it. Verify the inode is not NULL before dereferencing | ||
| 254 | * it. | ||
| 255 | */ | ||
| 256 | if (!ima_initialized || !inode || !S_ISREG(inode->i_mode)) | ||
| 253 | return; | 257 | return; |
| 254 | iint = ima_iint_find_insert_get(inode); | 258 | iint = ima_iint_find_insert_get(inode); |
| 255 | if (!iint) | 259 | if (!iint) |
