diff --git a/drivers/staging/cowloop/cowloop.c b/drivers/staging/cowloop/cowloop.c
index c43654b..a71c743 100644
--- a/drivers/staging/cowloop/cowloop.c
+++ b/drivers/staging/cowloop/cowloop.c
@@ -254,11 +254,7 @@
 #include <linux/stat.h>
 #include <linux/vmalloc.h>
 #include <linux/slab.h>
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
 #include <linux/semaphore.h>
-#else
-#include <asm/semaphore.h>
-#endif
 #include <asm/uaccess.h>
 #include <linux/proc_fs.h>
 #include <linux/blkdev.h>
@@ -421,15 +417,8 @@
 static long int cowlo_readcowraw (struct cowloop_device *, void *, int, loff_t);
 static long int cowlo_writecow   (struct cowloop_device *, void *, int, loff_t);
 static long int cowlo_writecowraw(struct cowloop_device *, void *, int, loff_t);
-
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
 static int      cowlo_ioctl      (struct block_device *, fmode_t,
            			 		unsigned int, unsigned long);
-#else
-static int      cowlo_ioctl      (struct inode *, struct file *,
-           			 		unsigned int, unsigned long);
-#endif
-
 static int	cowlo_makepair    (struct cowpair __user *);
 static int	cowlo_removepair  (unsigned long  __user *);
 static int	cowlo_watch       (struct cowpair __user *);
@@ -452,16 +441,10 @@
 ** 	0   - okay
 **    < 0   - error value
 */
-static int
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
-cowlo_open(struct block_device *bdev, fmode_t mode)
-#else
-cowlo_open(struct inode *inode, struct file *file)
-#endif
+static int cowlo_open(struct block_device *bdev, fmode_t mode)
 {
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
 	struct inode *inode = bdev->bd_inode;
-#endif
+
 	if (!inode)
 		return -EINVAL;
 
@@ -497,20 +480,13 @@
 ** returns:
 ** 	0   - okay
 */
-static int
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
-cowlo_release(struct gendisk *gd, fmode_t mode)
-#else
-cowlo_release(struct inode *inode, struct file *file)
-#endif
+static int cowlo_release(struct gendisk *gd, fmode_t mode)
 {
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
 	struct block_device *bdev;
 	struct inode *inode;
 
 	bdev = bdget_disk(gd, 0);
 	inode = bdev->bd_inode;
-#endif
 	if (!inode)
 		return 0;
 
@@ -529,19 +505,11 @@
 ** 	0   - okay
 **    < 0   - error value
 */
-static int
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
-cowlo_ioctl(struct block_device *bdev, fmode_t mode,
-            unsigned int cmd, unsigned long arg)
-#else
-cowlo_ioctl(struct inode *inode, struct file *filp,
-            unsigned int cmd, unsigned long arg)
-#endif
+static int cowlo_ioctl(struct block_device *bdev, fmode_t mode,
+		       unsigned int cmd, unsigned long arg)
 {
 	struct hd_geometry	geo;
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
 	struct inode *inode = bdev->bd_inode;
-#endif
 
 	DEBUGP(DCOW "cowloop - ioctl cmd %x\n", cmd);
 
@@ -955,12 +923,7 @@
 ** function to be called by core-kernel to handle the I/O-requests
 ** in the queue
 */
-static void
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
-cowlo_request(struct request_queue *q)
-#else
-cowlo_request(request_queue_t *q)
-#endif
+static void cowlo_request(struct request_queue *q)
 {
 	struct request		*req;
 	struct cowloop_device	*cowdev;
@@ -1549,11 +1512,7 @@
 	     (cowdev->cowwrites    % SPCDFLINTVL == 0) ) {
 		struct kstatfs		ks;
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18))
 		if (vfs_statfs(cowdev->cowfp->f_dentry, &ks)==0){
-#else
-		if (vfs_statfs(cowdev->cowfp->f_dentry->d_inode->i_sb, &ks)==0){
-#endif
 			if (ks.f_bavail <= SPCMINBLK) {
 				switch (ks.f_bavail) {
 				   case 0:
@@ -1860,11 +1819,7 @@
 	/*
 	** administer total and available size of filesystem holding cowfile
 	*/
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18))
-		if (vfs_statfs(cowdev->cowfp->f_dentry, &ks)==0){
-#else
-		if (vfs_statfs(cowdev->cowfp->f_dentry->d_inode->i_sb, &ks)==0){
-#endif
+	if (vfs_statfs(cowdev->cowfp->f_dentry, &ks)==0) {
 		cowdev->blksize  = ks.f_bsize;
 		cowdev->blktotal = ks.f_blocks;
 		cowdev->blkavail = ks.f_bavail;
@@ -2120,13 +2075,8 @@
 			cowdev->belowq = cowdev->belowgd->queue;
 
 			if (cowdev->numblocks == 0) {
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
 				cowdev->numblocks = get_capacity(cowdev->belowgd)
                          					/ (MAPUNIT/512);
-#else
-				cowdev->numblocks = cowdev->belowgd->capacity
-                         					/ (MAPUNIT/512);
-#endif
 			}
 		}
 
@@ -2869,12 +2819,7 @@
 	for (minor=0; minor < maxcows;  minor++)
 		(void) cowlo_closepair(cowdevall[minor]);
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23))
 	unregister_blkdev(COWMAJOR, DEVICE_NAME);
-#else
-	if (unregister_blkdev(COWMAJOR, DEVICE_NAME) != 0)
-		printk(KERN_WARNING "cowloop - cannot unregister blkdev\n");
-#endif
 
 	/*
 	** get rid of /proc/cow and unregister the driver
