OSDN Git Service

Bug #11951: Fix an errno sign inversion on pre-FreeBSD 5.
authorvehemens <vehemens@verizon.net>
Mon, 13 Aug 2007 17:17:47 +0000 (10:17 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 13 Aug 2007 18:36:10 +0000 (11:36 -0700)
Also, annotate where signs change, to hopefully remind the reader of these
issues in the future.

bsd-core/drmP.h
bsd-core/drm_dma.c
bsd-core/drm_fops.c
bsd-core/drm_irq.c

index 73342d0..8a768f0 100644 (file)
@@ -377,6 +377,7 @@ do {                                                                        \
 } while (0)
 
 #if defined(__FreeBSD__) && __FreeBSD_version > 500000
+/* Returns -errno to shared code */
 #define DRM_WAIT_ON( ret, queue, timeout, condition )          \
 for ( ret = 0 ; !ret && !(condition) ; ) {                     \
        DRM_UNLOCK();                                           \
@@ -388,11 +389,12 @@ for ( ret = 0 ; !ret && !(condition) ; ) {                        \
        DRM_LOCK();                                             \
 }
 #else
+/* Returns -errno to shared code */
 #define DRM_WAIT_ON( ret, queue, timeout, condition )  \
 for ( ret = 0 ; !ret && !(condition) ; ) {             \
         int s = spldrm();                              \
        if (!(condition))                               \
-          ret = tsleep( &(queue), PZERO | PCATCH,      \
+          ret = -tsleep( &(queue), PZERO | PCATCH,     \
                         "drmwtq", (timeout) );         \
        splx(s);                                        \
 }
index fc1e125..4896cf2 100644 (file)
@@ -121,6 +121,7 @@ int drm_dma(drm_device_t *dev, void *data, struct drm_file *file_priv)
 {
 
        if (dev->driver.dma_ioctl) {
+               /* shared code returns -errno */
                return -dev->driver.dma_ioctl(dev, data, file_priv);
        } else {
                DRM_DEBUG("DMA ioctl on driver with no dma handler\n");
index 870e4d2..2d037ea 100644 (file)
@@ -93,6 +93,7 @@ int drm_open_helper(struct cdev *kdev, int flags, int fmt, DRM_STRUCTPROC *p,
                priv->authenticated     = DRM_SUSER(p);
 
                if (dev->driver.open) {
+                       /* shared code returns -errno */
                        retcode = -dev->driver.open(dev, priv);
                        if (retcode != 0) {
                                free(priv, M_DRM);
index 1ab532f..9c437e9 100644 (file)
@@ -241,6 +241,7 @@ int drm_wait_vblank(drm_device_t *dev, void *data, struct drm_file *file_priv)
                ret = EINVAL;
        } else {
                DRM_LOCK();
+               /* shared code returns -errno */
                ret = -dev->driver.vblank_wait(dev,
                    &vblwait->request.sequence);
                DRM_UNLOCK();