From: Kevin Winchester <kjwinchester@gmail.com>
To: David Airlie <airlied@linux.ie>
Cc: dri-devel@lists.sourceforge.net, Andi Kleen <andi@firstfloor.org>,
linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org,
Kevin Winchester <kjwinchester@gmail.com>
Subject: [patch 1/1] Convert drivers in drivers/char/drm to use .unlocked_ioctl
Date: Wed, 09 Jan 2008 00:54:17 +0000 [thread overview]
Message-ID: <20080109005443.227306069@gmail.com> (raw)
In-Reply-To: 20080109005416.039551758@gmail.com
To: David Airlie <airlied@linux.ie>
Cc: dri-devel@lists.sourceforge.net
Cc: Andi Kleen <andi@firstfloor.org>
Cc: linux-kernel@vger.kernel.org
Cc: kernel-janitors@vger.kernel.org
The drm drivers in this patch all used drm_ioctl to perform their
ioctl calls. The common function is converted to use lock_kernel()
and unlock_kernel() and the drivers are converted to use .unlocked_ioctl
Signed-off-by: Kevin Winchester <kjwinchester@gmail.com>
---
I also noted that in the failed kmalloc case in drm_ioctl(), the function
immediately returns -ENOMEM, rather than following the error path that
calls atomic_dec(&dev->ioctl_count);. I'm not sure if the ioctl_count
is just not important in the -ENOMEM case, or if this is a bug.
drivers/char/drm/drmP.h | 3 +--
drivers/char/drm/drm_drv.c | 10 ++++++----
drivers/char/drm/i810_dma.c | 2 +-
drivers/char/drm/i810_drv.c | 2 +-
drivers/char/drm/i830_dma.c | 2 +-
drivers/char/drm/i830_drv.c | 2 +-
drivers/char/drm/i915_drv.c | 2 +-
drivers/char/drm/mga_drv.c | 2 +-
drivers/char/drm/r128_drv.c | 2 +-
drivers/char/drm/radeon_drv.c | 2 +-
drivers/char/drm/savage_drv.c | 2 +-
drivers/char/drm/sis_drv.c | 2 +-
drivers/char/drm/tdfx_drv.c | 2 +-
drivers/char/drm/via_drv.c | 2 +-
14 files changed, 19 insertions(+), 18 deletions(-)
Index: v2.6.24-rc7/drivers/char/drm/drmP.h
=================================--- v2.6.24-rc7.orig/drivers/char/drm/drmP.h
+++ v2.6.24-rc7/drivers/char/drm/drmP.h
@@ -833,8 +833,7 @@ static inline int drm_mtrr_del(int handl
/* Driver support (drm_drv.h) */
extern int drm_init(struct drm_driver *driver);
extern void drm_exit(struct drm_driver *driver);
-extern int drm_ioctl(struct inode *inode, struct file *filp,
- unsigned int cmd, unsigned long arg);
+extern long drm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
extern long drm_compat_ioctl(struct file *filp,
unsigned int cmd, unsigned long arg);
extern int drm_lastclose(struct drm_device *dev);
Index: v2.6.24-rc7/drivers/char/drm/drm_drv.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/drm_drv.c
+++ v2.6.24-rc7/drivers/char/drm/drm_drv.c
@@ -438,7 +438,6 @@ static int drm_version(struct drm_device
/**
* Called whenever a process performs an ioctl on /dev/drm.
*
- * \param inode device inode.
* \param file_priv DRM file private.
* \param cmd command.
* \param arg user argument.
@@ -447,8 +446,7 @@ static int drm_version(struct drm_device
* Looks up the ioctl function in the ::ioctls table, checking for root
* previleges if so required, and dispatches to the respective function.
*/
-int drm_ioctl(struct inode *inode, struct file *filp,
- unsigned int cmd, unsigned long arg)
+long drm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
struct drm_file *file_priv = filp->private_data;
struct drm_device *dev = file_priv->head->dev;
@@ -458,6 +456,7 @@ int drm_ioctl(struct inode *inode, struc
int retcode = -EINVAL;
char *kdata = NULL;
+ lock_kernel();
atomic_inc(&dev->ioctl_count);
atomic_inc(&dev->counts[_DRM_STAT_IOCTLS]);
++file_priv->ioctl_count;
@@ -494,8 +493,10 @@ int drm_ioctl(struct inode *inode, struc
} else {
if (cmd & (IOC_IN | IOC_OUT)) {
kdata = kmalloc(_IOC_SIZE(cmd), GFP_KERNEL);
- if (!kdata)
+ if (!kdata) {
+ unlock_kernel();
return -ENOMEM;
+ }
}
if (cmd & IOC_IN) {
@@ -520,6 +521,7 @@ int drm_ioctl(struct inode *inode, struc
atomic_dec(&dev->ioctl_count);
if (retcode)
DRM_DEBUG("ret = %x\n", retcode);
+ unlock_kernel();
return retcode;
}
Index: v2.6.24-rc7/drivers/char/drm/i810_dma.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/i810_dma.c
+++ v2.6.24-rc7/drivers/char/drm/i810_dma.c
@@ -115,7 +115,7 @@ static int i810_mmap_buffers(struct file
static const struct file_operations i810_buffer_fops = {
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = i810_mmap_buffers,
.fasync = drm_fasync,
};
Index: v2.6.24-rc7/drivers/char/drm/i810_drv.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/i810_drv.c
+++ v2.6.24-rc7/drivers/char/drm/i810_drv.c
@@ -59,7 +59,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/i830_dma.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/i830_dma.c
+++ v2.6.24-rc7/drivers/char/drm/i830_dma.c
@@ -117,7 +117,7 @@ static int i830_mmap_buffers(struct file
static const struct file_operations i830_buffer_fops = {
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = i830_mmap_buffers,
.fasync = drm_fasync,
};
Index: v2.6.24-rc7/drivers/char/drm/i830_drv.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/i830_drv.c
+++ v2.6.24-rc7/drivers/char/drm/i830_drv.c
@@ -70,7 +70,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/i915_drv.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/i915_drv.c
+++ v2.6.24-rc7/drivers/char/drm/i915_drv.c
@@ -64,7 +64,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/mga_drv.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/mga_drv.c
+++ v2.6.24-rc7/drivers/char/drm/mga_drv.c
@@ -67,7 +67,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/r128_drv.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/r128_drv.c
+++ v2.6.24-rc7/drivers/char/drm/r128_drv.c
@@ -62,7 +62,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/radeon_drv.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/radeon_drv.c
+++ v2.6.24-rc7/drivers/char/drm/radeon_drv.c
@@ -85,7 +85,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/savage_drv.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/savage_drv.c
+++ v2.6.24-rc7/drivers/char/drm/savage_drv.c
@@ -50,7 +50,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/sis_drv.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/sis_drv.c
+++ v2.6.24-rc7/drivers/char/drm/sis_drv.c
@@ -80,7 +80,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/tdfx_drv.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/tdfx_drv.c
+++ v2.6.24-rc7/drivers/char/drm/tdfx_drv.c
@@ -48,7 +48,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/via_drv.c
=================================--- v2.6.24-rc7.orig/drivers/char/drm/via_drv.c
+++ v2.6.24-rc7/drivers/char/drm/via_drv.c
@@ -62,7 +62,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
--
WARNING: multiple messages have this Message-ID (diff)
From: Kevin Winchester <kjwinchester@gmail.com>
To: David Airlie <airlied@linux.ie>
Cc: dri-devel@lists.sourceforge.net, Andi Kleen <andi@firstfloor.org>,
linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org,
Kevin Winchester <kjwinchester@gmail.com>
Subject: [patch 1/1] Convert drivers in drivers/char/drm to use .unlocked_ioctl
Date: Tue, 08 Jan 2008 20:54:17 -0400 [thread overview]
Message-ID: <20080109005443.227306069@gmail.com> (raw)
In-Reply-To: 20080109005416.039551758@gmail.com
[-- Attachment #1: drm_ioctl-unlocked_ioctl.patch --]
[-- Type: text/plain, Size: 9361 bytes --]
To: David Airlie <airlied@linux.ie>
Cc: dri-devel@lists.sourceforge.net
Cc: Andi Kleen <andi@firstfloor.org>
Cc: linux-kernel@vger.kernel.org
Cc: kernel-janitors@vger.kernel.org
The drm drivers in this patch all used drm_ioctl to perform their
ioctl calls. The common function is converted to use lock_kernel()
and unlock_kernel() and the drivers are converted to use .unlocked_ioctl
Signed-off-by: Kevin Winchester <kjwinchester@gmail.com>
---
I also noted that in the failed kmalloc case in drm_ioctl(), the function
immediately returns -ENOMEM, rather than following the error path that
calls atomic_dec(&dev->ioctl_count);. I'm not sure if the ioctl_count
is just not important in the -ENOMEM case, or if this is a bug.
drivers/char/drm/drmP.h | 3 +--
drivers/char/drm/drm_drv.c | 10 ++++++----
drivers/char/drm/i810_dma.c | 2 +-
drivers/char/drm/i810_drv.c | 2 +-
drivers/char/drm/i830_dma.c | 2 +-
drivers/char/drm/i830_drv.c | 2 +-
drivers/char/drm/i915_drv.c | 2 +-
drivers/char/drm/mga_drv.c | 2 +-
drivers/char/drm/r128_drv.c | 2 +-
drivers/char/drm/radeon_drv.c | 2 +-
drivers/char/drm/savage_drv.c | 2 +-
drivers/char/drm/sis_drv.c | 2 +-
drivers/char/drm/tdfx_drv.c | 2 +-
drivers/char/drm/via_drv.c | 2 +-
14 files changed, 19 insertions(+), 18 deletions(-)
Index: v2.6.24-rc7/drivers/char/drm/drmP.h
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/drmP.h
+++ v2.6.24-rc7/drivers/char/drm/drmP.h
@@ -833,8 +833,7 @@ static inline int drm_mtrr_del(int handl
/* Driver support (drm_drv.h) */
extern int drm_init(struct drm_driver *driver);
extern void drm_exit(struct drm_driver *driver);
-extern int drm_ioctl(struct inode *inode, struct file *filp,
- unsigned int cmd, unsigned long arg);
+extern long drm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
extern long drm_compat_ioctl(struct file *filp,
unsigned int cmd, unsigned long arg);
extern int drm_lastclose(struct drm_device *dev);
Index: v2.6.24-rc7/drivers/char/drm/drm_drv.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/drm_drv.c
+++ v2.6.24-rc7/drivers/char/drm/drm_drv.c
@@ -438,7 +438,6 @@ static int drm_version(struct drm_device
/**
* Called whenever a process performs an ioctl on /dev/drm.
*
- * \param inode device inode.
* \param file_priv DRM file private.
* \param cmd command.
* \param arg user argument.
@@ -447,8 +446,7 @@ static int drm_version(struct drm_device
* Looks up the ioctl function in the ::ioctls table, checking for root
* previleges if so required, and dispatches to the respective function.
*/
-int drm_ioctl(struct inode *inode, struct file *filp,
- unsigned int cmd, unsigned long arg)
+long drm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
struct drm_file *file_priv = filp->private_data;
struct drm_device *dev = file_priv->head->dev;
@@ -458,6 +456,7 @@ int drm_ioctl(struct inode *inode, struc
int retcode = -EINVAL;
char *kdata = NULL;
+ lock_kernel();
atomic_inc(&dev->ioctl_count);
atomic_inc(&dev->counts[_DRM_STAT_IOCTLS]);
++file_priv->ioctl_count;
@@ -494,8 +493,10 @@ int drm_ioctl(struct inode *inode, struc
} else {
if (cmd & (IOC_IN | IOC_OUT)) {
kdata = kmalloc(_IOC_SIZE(cmd), GFP_KERNEL);
- if (!kdata)
+ if (!kdata) {
+ unlock_kernel();
return -ENOMEM;
+ }
}
if (cmd & IOC_IN) {
@@ -520,6 +521,7 @@ int drm_ioctl(struct inode *inode, struc
atomic_dec(&dev->ioctl_count);
if (retcode)
DRM_DEBUG("ret = %x\n", retcode);
+ unlock_kernel();
return retcode;
}
Index: v2.6.24-rc7/drivers/char/drm/i810_dma.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/i810_dma.c
+++ v2.6.24-rc7/drivers/char/drm/i810_dma.c
@@ -115,7 +115,7 @@ static int i810_mmap_buffers(struct file
static const struct file_operations i810_buffer_fops = {
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = i810_mmap_buffers,
.fasync = drm_fasync,
};
Index: v2.6.24-rc7/drivers/char/drm/i810_drv.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/i810_drv.c
+++ v2.6.24-rc7/drivers/char/drm/i810_drv.c
@@ -59,7 +59,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/i830_dma.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/i830_dma.c
+++ v2.6.24-rc7/drivers/char/drm/i830_dma.c
@@ -117,7 +117,7 @@ static int i830_mmap_buffers(struct file
static const struct file_operations i830_buffer_fops = {
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = i830_mmap_buffers,
.fasync = drm_fasync,
};
Index: v2.6.24-rc7/drivers/char/drm/i830_drv.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/i830_drv.c
+++ v2.6.24-rc7/drivers/char/drm/i830_drv.c
@@ -70,7 +70,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/i915_drv.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/i915_drv.c
+++ v2.6.24-rc7/drivers/char/drm/i915_drv.c
@@ -64,7 +64,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/mga_drv.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/mga_drv.c
+++ v2.6.24-rc7/drivers/char/drm/mga_drv.c
@@ -67,7 +67,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/r128_drv.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/r128_drv.c
+++ v2.6.24-rc7/drivers/char/drm/r128_drv.c
@@ -62,7 +62,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/radeon_drv.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/radeon_drv.c
+++ v2.6.24-rc7/drivers/char/drm/radeon_drv.c
@@ -85,7 +85,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/savage_drv.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/savage_drv.c
+++ v2.6.24-rc7/drivers/char/drm/savage_drv.c
@@ -50,7 +50,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/sis_drv.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/sis_drv.c
+++ v2.6.24-rc7/drivers/char/drm/sis_drv.c
@@ -80,7 +80,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/tdfx_drv.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/tdfx_drv.c
+++ v2.6.24-rc7/drivers/char/drm/tdfx_drv.c
@@ -48,7 +48,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
Index: v2.6.24-rc7/drivers/char/drm/via_drv.c
===================================================================
--- v2.6.24-rc7.orig/drivers/char/drm/via_drv.c
+++ v2.6.24-rc7/drivers/char/drm/via_drv.c
@@ -62,7 +62,7 @@ static struct drm_driver driver = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
- .ioctl = drm_ioctl,
+ .unlocked_ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
--
next parent reply other threads:[~2008-01-09 0:54 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20080109005416.039551758@gmail.com>
2008-01-09 0:54 ` Kevin Winchester [this message]
2008-01-09 0:54 ` [patch 1/1] Convert drivers in drivers/char/drm to use .unlocked_ioctl Kevin Winchester
2008-01-09 3:37 ` [patch 1/1] Convert drivers in drivers/char/drm to use Dave Airlie
2008-01-09 3:37 ` [patch 1/1] Convert drivers in drivers/char/drm to use .unlocked_ioctl Dave Airlie
2008-01-09 4:11 ` Andi Kleen
2008-01-09 4:11 ` Andi Kleen
2008-01-09 4:51 ` [patch 1/1] Convert drivers in drivers/char/drm to use Dave Airlie
2008-01-09 4:51 ` [patch 1/1] Convert drivers in drivers/char/drm to use .unlocked_ioctl Dave Airlie
2008-01-09 12:28 ` Kevin Winchester
2008-01-09 12:28 ` Kevin Winchester
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080109005443.227306069@gmail.com \
--to=kjwinchester@gmail.com \
--cc=airlied@linux.ie \
--cc=andi@firstfloor.org \
--cc=dri-devel@lists.sourceforge.net \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.