Messages in this thread | | | Date | Thu, 11 Apr 2013 13:38:56 -0700 | Subject | Re: [PATCH v2 3/7] staging: android: binder: fix binder interface for 64bit compat layer | From | Arve Hjønnevåg <> |
| |
On Thu, Apr 11, 2013 at 8:13 AM, Serban Constantinescu <Serban.Constantinescu@arm.com> wrote: ... >>> >>>>> unsigned long read_buffer; >>>>> }; >>>>> >>>>> /* Use with BINDER_VERSION, driver fills in fields. */ >>>>> struct binder_version { >>>>> /* driver protocol version -- increment with incompatible change */ >>>>> - signed long protocol_version; >>>>> + __s32 protocol_version; >>>> >>>> >>>> >>>> How does user-space know if it should use 32 bit or 64 bit pointers. >>>> Without this change, the BINDER_VERSION ioctl would only match when >>>> the size of long matches. >>> >>> >>> >>> The userspace can check the values returned by uname(). That will >>> determine >>> if the kernel is 32 or 64bit and depending on this select what binder >>> structures to use. Next a BINDER_VERSION ioctl will fail on 64bit kernels >>> using protocol_version as 64bit signed long(that is old kernel versions >>> with >>> no 64bit support). >>> >>> Leaving this value as signed long would mean that older versions of the >>> binder(without 64bit support) will pass the check. Furthermore the >>> protocol >>> version will probably never exceed the values that could be represented >>> on >>> 32bit. It will also mean that BINDER_VERSION will have a different >>> userspace/kernel handler for 64/32 systems. >>> >>> Let me know what are your thoughts related to these changes, >>> Thanks for your feedback, >>> Serban >>> >> >> I think user-space should get the binder pointer size from the binder >> driver, not elsewhere. Since the current driver does not appear to be >> functional on a 64 bit system, I think adding an ioctl to get the >> size, or encoding it into the binder version (use an unsigned type if >> you do this), would be best. > > > I will think about the best way of getting the pointer size and add it to > the patch set for binder compat. For this patch set I will only modify the > protocol_version from long to __s32. >
OK, but if you are using this change let a 64 bit user-space know that the driver has been fixed, then this patch needs to go after the patches that change the structures on 64 bit systems.
-- Arve Hjønnevåg -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |