Linux v4.0-rc5-25-g90a5a895cc8b
- Add some i915 fixes
This commit is contained in:
parent
04612c67bb
commit
6b33b74760
@ -1,97 +0,0 @@
|
||||
From: Josh Boyer <jwboyer@fedoraproject.org>
|
||||
Date: Mon, 23 Mar 2015 13:50:33 -0400
|
||||
Subject: [PATCH] Revert "drm/i915: Ensure plane->state->fb stays in sync with
|
||||
plane->fb"
|
||||
|
||||
This reverts commit 319c1d420a0b62d9dbb88104afebaabc968cdbfa.
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_display.c | 17 -----------------
|
||||
1 file changed, 17 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index e116dee10cf9..ac8112d86237 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -37,7 +37,6 @@
|
||||
#include <drm/i915_drm.h>
|
||||
#include "i915_drv.h"
|
||||
#include "i915_trace.h"
|
||||
-#include <drm/drm_atomic.h>
|
||||
#include <drm/drm_atomic_helper.h>
|
||||
#include <drm/drm_dp_helper.h>
|
||||
#include <drm/drm_crtc_helper.h>
|
||||
@@ -2417,14 +2416,6 @@ out_unref_obj:
|
||||
return false;
|
||||
}
|
||||
|
||||
-/* Update plane->state->fb to match plane->fb after driver-internal updates */
|
||||
-static void
|
||||
-update_state_fb(struct drm_plane *plane)
|
||||
-{
|
||||
- if (plane->fb != plane->state->fb)
|
||||
- drm_atomic_set_fb_for_plane(plane->state, plane->fb);
|
||||
-}
|
||||
-
|
||||
static void
|
||||
intel_find_plane_obj(struct intel_crtc *intel_crtc,
|
||||
struct intel_initial_plane_config *plane_config)
|
||||
@@ -2471,8 +2462,6 @@ intel_find_plane_obj(struct intel_crtc *intel_crtc,
|
||||
break;
|
||||
}
|
||||
}
|
||||
-
|
||||
- update_state_fb(intel_crtc->base.primary);
|
||||
}
|
||||
|
||||
static void i9xx_update_primary_plane(struct drm_crtc *crtc,
|
||||
@@ -6663,7 +6652,6 @@ i9xx_get_initial_plane_config(struct intel_crtc *crtc,
|
||||
plane_config->size);
|
||||
|
||||
crtc->base.primary->fb = fb;
|
||||
- update_state_fb(crtc->base.primary);
|
||||
}
|
||||
|
||||
static void chv_crtc_clock_get(struct intel_crtc *crtc,
|
||||
@@ -7704,7 +7692,6 @@ skylake_get_initial_plane_config(struct intel_crtc *crtc,
|
||||
plane_config->size);
|
||||
|
||||
crtc->base.primary->fb = fb;
|
||||
- update_state_fb(crtc->base.primary);
|
||||
return;
|
||||
|
||||
error:
|
||||
@@ -7798,7 +7785,6 @@ ironlake_get_initial_plane_config(struct intel_crtc *crtc,
|
||||
plane_config->size);
|
||||
|
||||
crtc->base.primary->fb = fb;
|
||||
- update_state_fb(crtc->base.primary);
|
||||
}
|
||||
|
||||
static bool ironlake_get_pipe_config(struct intel_crtc *crtc,
|
||||
@@ -9837,7 +9823,6 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
|
||||
drm_gem_object_reference(&obj->base);
|
||||
|
||||
crtc->primary->fb = fb;
|
||||
- update_state_fb(crtc->primary);
|
||||
|
||||
work->pending_flip_obj = obj;
|
||||
|
||||
@@ -9906,7 +9891,6 @@ cleanup_unpin:
|
||||
cleanup_pending:
|
||||
atomic_dec(&intel_crtc->unpin_work_count);
|
||||
crtc->primary->fb = old_fb;
|
||||
- update_state_fb(crtc->primary);
|
||||
drm_gem_object_unreference(&work->old_fb_obj->base);
|
||||
drm_gem_object_unreference(&obj->base);
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
@@ -13741,7 +13725,6 @@ void intel_modeset_gem_init(struct drm_device *dev)
|
||||
to_intel_crtc(c)->pipe);
|
||||
drm_framebuffer_unreference(c->primary->fb);
|
||||
c->primary->fb = NULL;
|
||||
- update_state_fb(c->primary);
|
||||
}
|
||||
}
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
--
|
||||
2.1.0
|
||||
|
72
drm-Fixup-racy-refcounting-in-plane_force_disable.patch
Normal file
72
drm-Fixup-racy-refcounting-in-plane_force_disable.patch
Normal file
@ -0,0 +1,72 @@
|
||||
From: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Date: Fri, 27 Feb 2015 12:58:13 +0100
|
||||
Subject: [PATCH] drm: Fixup racy refcounting in plane_force_disable
|
||||
|
||||
Originally it was impossible to be dropping the last refcount in this
|
||||
function since there was always one around still from the idr. But in
|
||||
|
||||
commit 83f45fc360c8e16a330474860ebda872d1384c8c
|
||||
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
Date: Wed Aug 6 09:10:18 2014 +0200
|
||||
|
||||
drm: Don't grab an fb reference for the idr
|
||||
|
||||
we've switched to weak references, broke that assumption but forgot to
|
||||
fix it up.
|
||||
|
||||
Since we still force-disable planes it's only possible to hit this
|
||||
when racing multiple rmfb with fbdev restoring or similar evil things.
|
||||
As long as userspace is nice it's impossible to hit the BUG_ON.
|
||||
|
||||
But the BUG_ON would most likely be hit from fbdev code, which usually
|
||||
invovles the console_lock besides all modeset locks. So very likely
|
||||
we'd never get the bug reports if this was hit in the wild, hence
|
||||
better be safe than sorry and backport.
|
||||
|
||||
Spotted by Matt Roper while reviewing other patches.
|
||||
|
||||
[airlied: pull this back into 4.0 - the oops happens there]
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Cc: Matt Roper <matthew.d.roper@intel.com>
|
||||
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
drivers/gpu/drm/drm_crtc.c | 13 +------------
|
||||
1 file changed, 1 insertion(+), 12 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
|
||||
index f6d04c7b5115..679b10e34fb5 100644
|
||||
--- a/drivers/gpu/drm/drm_crtc.c
|
||||
+++ b/drivers/gpu/drm/drm_crtc.c
|
||||
@@ -525,17 +525,6 @@ void drm_framebuffer_reference(struct drm_framebuffer *fb)
|
||||
}
|
||||
EXPORT_SYMBOL(drm_framebuffer_reference);
|
||||
|
||||
-static void drm_framebuffer_free_bug(struct kref *kref)
|
||||
-{
|
||||
- BUG();
|
||||
-}
|
||||
-
|
||||
-static void __drm_framebuffer_unreference(struct drm_framebuffer *fb)
|
||||
-{
|
||||
- DRM_DEBUG("%p: FB ID: %d (%d)\n", fb, fb->base.id, atomic_read(&fb->refcount.refcount));
|
||||
- kref_put(&fb->refcount, drm_framebuffer_free_bug);
|
||||
-}
|
||||
-
|
||||
/**
|
||||
* drm_framebuffer_unregister_private - unregister a private fb from the lookup idr
|
||||
* @fb: fb to unregister
|
||||
@@ -1320,7 +1309,7 @@ void drm_plane_force_disable(struct drm_plane *plane)
|
||||
return;
|
||||
}
|
||||
/* disconnect the plane from the fb and crtc: */
|
||||
- __drm_framebuffer_unreference(plane->old_fb);
|
||||
+ drm_framebuffer_unreference(plane->old_fb);
|
||||
plane->old_fb = NULL;
|
||||
plane->fb = NULL;
|
||||
plane->crtc = NULL;
|
||||
--
|
||||
2.1.0
|
||||
|
94
drm-i915-Don-t-try-to-reference-the-fb-in-get_initia.patch
Normal file
94
drm-i915-Don-t-try-to-reference-the-fb-in-get_initia.patch
Normal file
@ -0,0 +1,94 @@
|
||||
From: Damien Lespiau <damien.lespiau@intel.com>
|
||||
Date: Thu, 5 Feb 2015 18:30:20 +0000
|
||||
Subject: [PATCH] drm/i915: Don't try to reference the fb in
|
||||
get_initial_plane_config()
|
||||
|
||||
Tvrtko noticed a new warning on boot:
|
||||
|
||||
WARNING: CPU: 1 PID: 353 at include/linux/kref.h:47 drm_framebuffer_reference+0x6c/0x80 [drm]()
|
||||
Call Trace:
|
||||
[<ffffffff8161f10c>] dump_stack+0x4f/0x7b
|
||||
[<ffffffff81052caa>] warn_slowpath_common+0xaa/0xd0
|
||||
[<ffffffff81052d8a>] warn_slowpath_null+0x1a/0x20
|
||||
[<ffffffffa00d035c>] drm_framebuffer_reference+0x6c/0x80 [drm]
|
||||
[<ffffffffa01c0df7>] update_state_fb.isra.54+0x47/0x50 [i915]
|
||||
[<ffffffffa01ccd5c>] skylake_get_initial_plane_config+0x93c/0x950 [i915]
|
||||
[<ffffffffa01e8721>] intel_modeset_init+0x1551/0x17c0 [i915]
|
||||
[<ffffffffa02476e0>] i915_driver_load+0xed0/0x11e0 [i915]
|
||||
[<ffffffff81627aa1>] ? _raw_spin_unlock_irqrestore+0x51/0x70
|
||||
[<ffffffffa00ca8b7>] drm_dev_register+0x77/0x110 [drm]
|
||||
[<ffffffffa00cda3b>] drm_get_pci_dev+0x11b/0x1f0 [drm]
|
||||
[<ffffffff81098e3d>] ? trace_hardirqs_on+0xd/0x10
|
||||
[<ffffffff81627aa1>] ? _raw_spin_unlock_irqrestore+0x51/0x70
|
||||
[<ffffffffa0145276>] i915_pci_probe+0x56/0x60 [i915]
|
||||
[<ffffffff813ad59c>] pci_device_probe+0x7c/0x100
|
||||
[<ffffffff81466aad>] driver_probe_device+0x16d/0x380
|
||||
|
||||
We cannot take a reference at this point, not before
|
||||
intel_framebuffer_init() and the underlying drm_framebuffer_init().
|
||||
|
||||
Introduced in:
|
||||
|
||||
commit 706dc7b549175e47f23e913b7f1e52874a7d0f56
|
||||
Author: Matt Roper <matthew.d.roper@intel.com>
|
||||
Date: Tue Feb 3 13:10:04 2015 -0800
|
||||
|
||||
drm/i915: Ensure plane->state->fb stays in sync with plane->fb
|
||||
|
||||
v2: Don't move update_state_fb(). It was moved around because I
|
||||
originally put update_state_fb() in intel_alloc_plane_obj() before
|
||||
finding a better place. (Matt)
|
||||
|
||||
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
|
||||
Reported-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
||||
Cc: Matt Roper <matthew.d.roper@intel.com>
|
||||
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
||||
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
---
|
||||
drivers/gpu/drm/i915/intel_display.c | 7 +++----
|
||||
1 file changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index e116dee10cf9..177714a9d778 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -2438,8 +2438,10 @@ intel_find_plane_obj(struct intel_crtc *intel_crtc,
|
||||
if (!intel_crtc->base.primary->fb)
|
||||
return;
|
||||
|
||||
- if (intel_alloc_plane_obj(intel_crtc, plane_config))
|
||||
+ if (intel_alloc_plane_obj(intel_crtc, plane_config)) {
|
||||
+ update_state_fb(intel_crtc->base.primary);
|
||||
return;
|
||||
+ }
|
||||
|
||||
kfree(intel_crtc->base.primary->fb);
|
||||
intel_crtc->base.primary->fb = NULL;
|
||||
@@ -6663,7 +6665,6 @@ i9xx_get_initial_plane_config(struct intel_crtc *crtc,
|
||||
plane_config->size);
|
||||
|
||||
crtc->base.primary->fb = fb;
|
||||
- update_state_fb(crtc->base.primary);
|
||||
}
|
||||
|
||||
static void chv_crtc_clock_get(struct intel_crtc *crtc,
|
||||
@@ -7704,7 +7705,6 @@ skylake_get_initial_plane_config(struct intel_crtc *crtc,
|
||||
plane_config->size);
|
||||
|
||||
crtc->base.primary->fb = fb;
|
||||
- update_state_fb(crtc->base.primary);
|
||||
return;
|
||||
|
||||
error:
|
||||
@@ -7798,7 +7798,6 @@ ironlake_get_initial_plane_config(struct intel_crtc *crtc,
|
||||
plane_config->size);
|
||||
|
||||
crtc->base.primary->fb = fb;
|
||||
- update_state_fb(crtc->base.primary);
|
||||
}
|
||||
|
||||
static bool ironlake_get_pipe_config(struct intel_crtc *crtc,
|
||||
--
|
||||
2.1.0
|
||||
|
16
kernel.spec
16
kernel.spec
@ -68,7 +68,7 @@ Summary: The Linux kernel
|
||||
# The rc snapshot level
|
||||
%define rcrev 5
|
||||
# The git snapshot level
|
||||
%define gitrev 0
|
||||
%define gitrev 1
|
||||
# Set rpm version accordingly
|
||||
%define rpmversion 4.%{upstream_sublevel}.0
|
||||
%endif
|
||||
@ -627,9 +627,8 @@ Patch26168: HID-multitouch-add-support-of-clickpads.patch
|
||||
Patch26170: acpi-video-Allow-forcing-native-backlight-on-non-win.patch
|
||||
Patch26171: acpi-video-Add-force-native-backlight-quirk-for-Leno.patch
|
||||
|
||||
Patch26172: Revert-drm-i915-Ensure-plane-state-fb-stays-in-sync-.patch
|
||||
|
||||
Patch26173: net-validate-the-range-we-feed-to-iov_iter_init-in-s.patch
|
||||
Patch26172: drm-Fixup-racy-refcounting-in-plane_force_disable.patch
|
||||
Patch26173: drm-i915-Don-t-try-to-reference-the-fb-in-get_initia.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
@ -1369,9 +1368,8 @@ ApplyPatch HID-multitouch-add-support-of-clickpads.patch
|
||||
ApplyPatch acpi-video-Allow-forcing-native-backlight-on-non-win.patch
|
||||
ApplyPatch acpi-video-Add-force-native-backlight-quirk-for-Leno.patch
|
||||
|
||||
ApplyPatch Revert-drm-i915-Ensure-plane-state-fb-stays-in-sync-.patch
|
||||
|
||||
ApplyPatch net-validate-the-range-we-feed-to-iov_iter_init-in-s.patch
|
||||
ApplyPatch drm-Fixup-racy-refcounting-in-plane_force_disable.patch
|
||||
ApplyPatch drm-i915-Don-t-try-to-reference-the-fb-in-get_initia.patch
|
||||
|
||||
# END OF PATCH APPLICATIONS
|
||||
|
||||
@ -2223,6 +2221,10 @@ fi
|
||||
#
|
||||
#
|
||||
%changelog
|
||||
* Tue Mar 24 2015 Josh Boyer <jwboyer@fedoraproject.org> - 4.0.0-0.rc5.git1.3
|
||||
- Linux v4.0-rc5-25-g90a5a895cc8b
|
||||
- Add some i915 fixes
|
||||
|
||||
* Mon Mar 23 2015 Josh Boyer <jwboyer@fedoraproject.org> - 4.0.0-0.rc5.git0.3
|
||||
- Enable CONFIG_SND_BEBOB (rhbz 1204342)
|
||||
- Validate iovec range in sys_sendto/sys_recvfrom
|
||||
|
@ -1,37 +0,0 @@
|
||||
From: Al Viro <viro@ZenIV.linux.org.uk>
|
||||
Date: Fri, 20 Mar 2015 17:41:43 +0000
|
||||
Subject: [PATCH] net: validate the range we feed to iov_iter_init() in
|
||||
sys_sendto/sys_recvfrom
|
||||
|
||||
Cc: stable@vger.kernel.org # v3.19
|
||||
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
net/socket.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/net/socket.c b/net/socket.c
|
||||
index bbedbfcb42c2..245330ca0015 100644
|
||||
--- a/net/socket.c
|
||||
+++ b/net/socket.c
|
||||
@@ -1702,6 +1702,8 @@ SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len,
|
||||
|
||||
if (len > INT_MAX)
|
||||
len = INT_MAX;
|
||||
+ if (unlikely(!access_ok(VERIFY_READ, buff, len)))
|
||||
+ return -EFAULT;
|
||||
sock = sockfd_lookup_light(fd, &err, &fput_needed);
|
||||
if (!sock)
|
||||
goto out;
|
||||
@@ -1760,6 +1762,8 @@ SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size,
|
||||
|
||||
if (size > INT_MAX)
|
||||
size = INT_MAX;
|
||||
+ if (unlikely(!access_ok(VERIFY_WRITE, ubuf, size)))
|
||||
+ return -EFAULT;
|
||||
sock = sockfd_lookup_light(fd, &err, &fput_needed);
|
||||
if (!sock)
|
||||
goto out;
|
||||
--
|
||||
2.1.0
|
||||
|
Loading…
Reference in New Issue
Block a user