diff options
author | Dave Airlie <airlied@redhat.com> | 2014-04-05 02:14:21 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-04-05 02:14:21 -0400 |
commit | 9f97ba806a9cb8e828baca71eca8b684939053d8 (patch) | |
tree | ec036e36d1d2e64b6e67c4d5d24a5ecb6475aac0 /net/unix/af_unix.c | |
parent | 82c68b6ccd54117a87cb2d9b91c2ee6e1280cf9d (diff) | |
parent | 10b6ee4a87811a110cb01eaca01eb04da6801baf (diff) |
Merge tag 'drm-intel-fixes-2014-04-04' of git://anongit.freedesktop.org/drm-intel into drm-next
Merge window -fixes pull request as usual. Well, I did sneak in Jani's
drm_i915_private_t typedef removal, need to have fun with a big sed job
too ;-)
Otherwise:
- hdmi interlaced fixes (Jesse&Ville)
- pipe error/underrun/crc tracking fixes, regression in late 3.14-rc (but
not cc: stable since only really relevant for igt runs)
- large cursor wm fixes (Chris)
- fix gpu turbo boost/throttle again, was getting stuck due to vlv rps
patches (Chris+Imre)
- fix runtime pm fallout (Paulo)
- bios framebuffer inherit fix (Chris)
- a few smaller things
* tag 'drm-intel-fixes-2014-04-04' of git://anongit.freedesktop.org/drm-intel: (196 commits)
Skip intel_crt_init for Dell XPS 8700
drm/i915: vlv: fix RPS interrupt mask setting
Revert "drm/i915/vlv: fixup DDR freq detection per Punit spec"
drm/i915: move power domain init earlier during system resume
drm/i915: Fix the computation of required fb size for pipe
drm/i915: don't get/put runtime PM at the debugfs forcewake file
drm/i915: fix WARNs when reading DDI state while suspended
drm/i915: don't read cursor registers on powered down pipes
drm/i915: get runtime PM at i915_display_info
drm/i915: don't read pp_ctrl_reg if we're suspended
drm/i915: get runtime PM at i915_reg_read_ioctl
drm/i915: don't schedule force_wake_timer at gen6_read
drm/i915: vlv: reserve the GT power context only once during driver init
drm/i915: prefer struct drm_i915_private to drm_i915_private_t
drm/i915/overlay: prefer struct drm_i915_private to drm_i915_private_t
drm/i915/ringbuffer: prefer struct drm_i915_private to drm_i915_private_t
drm/i915/display: prefer struct drm_i915_private to drm_i915_private_t
drm/i915/irq: prefer struct drm_i915_private to drm_i915_private_t
drm/i915/gem: prefer struct drm_i915_private to drm_i915_private_t
drm/i915/dma: prefer struct drm_i915_private to drm_i915_private_t
...
Diffstat (limited to 'net/unix/af_unix.c')
-rw-r--r-- | net/unix/af_unix.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index ce6ec6c2f4de..94404f19f9de 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c | |||
@@ -1787,8 +1787,11 @@ static int unix_dgram_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
1787 | goto out; | 1787 | goto out; |
1788 | 1788 | ||
1789 | err = mutex_lock_interruptible(&u->readlock); | 1789 | err = mutex_lock_interruptible(&u->readlock); |
1790 | if (err) { | 1790 | if (unlikely(err)) { |
1791 | err = sock_intr_errno(sock_rcvtimeo(sk, noblock)); | 1791 | /* recvmsg() in non blocking mode is supposed to return -EAGAIN |
1792 | * sk_rcvtimeo is not honored by mutex_lock_interruptible() | ||
1793 | */ | ||
1794 | err = noblock ? -EAGAIN : -ERESTARTSYS; | ||
1792 | goto out; | 1795 | goto out; |
1793 | } | 1796 | } |
1794 | 1797 | ||
@@ -1913,6 +1916,7 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
1913 | struct unix_sock *u = unix_sk(sk); | 1916 | struct unix_sock *u = unix_sk(sk); |
1914 | DECLARE_SOCKADDR(struct sockaddr_un *, sunaddr, msg->msg_name); | 1917 | DECLARE_SOCKADDR(struct sockaddr_un *, sunaddr, msg->msg_name); |
1915 | int copied = 0; | 1918 | int copied = 0; |
1919 | int noblock = flags & MSG_DONTWAIT; | ||
1916 | int check_creds = 0; | 1920 | int check_creds = 0; |
1917 | int target; | 1921 | int target; |
1918 | int err = 0; | 1922 | int err = 0; |
@@ -1928,7 +1932,7 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
1928 | goto out; | 1932 | goto out; |
1929 | 1933 | ||
1930 | target = sock_rcvlowat(sk, flags&MSG_WAITALL, size); | 1934 | target = sock_rcvlowat(sk, flags&MSG_WAITALL, size); |
1931 | timeo = sock_rcvtimeo(sk, flags&MSG_DONTWAIT); | 1935 | timeo = sock_rcvtimeo(sk, noblock); |
1932 | 1936 | ||
1933 | /* Lock the socket to prevent queue disordering | 1937 | /* Lock the socket to prevent queue disordering |
1934 | * while sleeps in memcpy_tomsg | 1938 | * while sleeps in memcpy_tomsg |
@@ -1940,8 +1944,11 @@ static int unix_stream_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
1940 | } | 1944 | } |
1941 | 1945 | ||
1942 | err = mutex_lock_interruptible(&u->readlock); | 1946 | err = mutex_lock_interruptible(&u->readlock); |
1943 | if (err) { | 1947 | if (unlikely(err)) { |
1944 | err = sock_intr_errno(timeo); | 1948 | /* recvmsg() in non blocking mode is supposed to return -EAGAIN |
1949 | * sk_rcvtimeo is not honored by mutex_lock_interruptible() | ||
1950 | */ | ||
1951 | err = noblock ? -EAGAIN : -ERESTARTSYS; | ||
1945 | goto out; | 1952 | goto out; |
1946 | } | 1953 | } |
1947 | 1954 | ||