Skip to contentSkip to conversation

staging: android: binder.c: avoid sparse checker warning: cast removes address space of expression

PATCH In review Yves Deweerdt 2 participants 2 messages Apr 16, 2014 Staging

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 staging: android: binder.c: avoid sparse checker warning: cast removes address space of expression

__user should be kept when casting to struct binder_version *

---
 drivers/staging/android/binder.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
drivers/staging/android/binder.c +7 -2
index cfe4bc8..0f74e43 100644
@@ -2683,16 +2683,21 @@ static long binder_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 		binder_free_thread(proc, thread);
 		thread = NULL;
 		break;
-	case BINDER_VERSION:
+	case BINDER_VERSION: {
+		struct binder_version __user *bv =
+			(struct binder_version __user *)ubuf;
+
 		if (size != sizeof(struct binder_version)) {
 			ret = -EINVAL;
 			goto err;
 		}
-		if (put_user(BINDER_CURRENT_PROTOCOL_VERSION, &((struct binder_version *)ubuf)->protocol_version)) {
+		if (put_user(BINDER_CURRENT_PROTOCOL_VERSION,
+				&(bv->protocol_version))) {
 			ret = -EINVAL;
 			goto err;
 		}
 		break;
+	}
 	default:
 		ret = -EINVAL;
 		goto err;
Signature · 1 line
1.8.3.2
#1 lore raw
Quoted 4 lines · Yves Deweerdt

__user should be kept when casting to struct binder_version *

Mathieu sent this one earlier.
http://driverdev.linuxdriverproject.org/pipermail/driverdev-devel/2014-April/048614.html

His is perfect, except that he missed the space in the ": {", but it's still ok.

regards,
dan carpenter

Quoted 40 lines
---
 drivers/staging/android/binder.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
drivers/staging/android/binder.c +7 -2
index cfe4bc8..0f74e43 100644
@@ -2683,16 +2683,21 @@ static long binder_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 		binder_free_thread(proc, thread);
 		thread = NULL;
 		break;
-	case BINDER_VERSION:
+	case BINDER_VERSION: {
+		struct binder_version __user *bv =
+			(struct binder_version __user *)ubuf;
+
 		if (size != sizeof(struct binder_version)) {
 			ret = -EINVAL;
 			goto err;
 		}
-		if (put_user(BINDER_CURRENT_PROTOCOL_VERSION, &((struct binder_version *)ubuf)->protocol_version)) {
+		if (put_user(BINDER_CURRENT_PROTOCOL_VERSION,
+				&(bv->protocol_version))) {
 			ret = -EINVAL;
 			goto err;
 		}
 		break;
+	}
 	default:
 		ret = -EINVAL;
 		goto err;
Signature · 6 lines
1.8.3.2

_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel