On Feb 10, 2008 9:39 AM, Jan Kiszka <jan.kiszka@web.de> wrote:Thanks for responding. I'd mentioned it twice already and gotten no response, so wasn't sure if my microphone was on :-). If you're feeling energetic, the same sort of cleanup can be done against: +#ifdef __BIG_ENDIAN + tmp_s |= hex(*buf++) << 12; + tmp_s |= hex(*buf++) << 8; + tmp_s |= hex(*buf++) << 4; + tmp_s |= hex(*buf++); +#else + tmp_s |= hex(*buf++) << 4; + tmp_s |= hex(*buf++); + tmp_s |= hex(*buf++) << 12; + tmp_s |= hex(*buf++) << 8; +#endif + if (probe_kernel_write(mem, tmp_s)) + return ERR_PTR(-EINVAL); + + mem += 2; + } else if ((count == 4) && (((long)mem & 3) == 0)) { + u32 tmp_l = 0; + +#ifdef __BIG_ENDIAN + tmp_l |= hex(*buf++) << 28; + tmp_l |= hex(*buf++) << 24; + tmp_l |= hex(*buf++) << 20; + tmp_l |= hex(*buf++) << 16; + tmp_l |= hex(*buf++) << 12; + tmp_l |= hex(*buf++) << 8; + tmp_l |= hex(*buf++) << 4; + tmp_l |= hex(*buf++); +#else + tmp_l |= hex(*buf++) << 4; + tmp_l |= hex(*buf++); + tmp_l |= hex(*buf++) << 12; + tmp_l |= hex(*buf++) << 8; + tmp_l |= hex(*buf++) << 20; + tmp_l |= hex(*buf++) << 16; + tmp_l |= hex(*buf++) << 28; + tmp_l |= hex(*buf++) << 24; +#endif + if (probe_kernel_write(mem, tmp_l)) + return ERR_PTR(-EINVAL); + mem += 4; As in, write a helper to parse a hex16, hex32, hex64, then do a be[16|32|64]_to_cpu, and probe_kernel_write the result. u64 hex_to_u64(unsigned char *buf) { int i; u64 val = 0; for (i=0; i<16; i++) val = val<<4 | hex(buf[i]); /* or *buf++, take your pick */ return val; } ... if (probe_kernel_write(mem, be64_to_cpu(hex_to_u64(unsigned char *buf))) return ERR_PTR(-EINVAL)); mem += 4; buf += 16; Or, you know, something like that. --
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| James Bottomley | Re: Announce: Linux-next (Or Andrew's dream :-)) |
| Trent Piepho | Re: [PATCH] fakephp: Allocate PCI resources before adding the device |
| Antonio Almeida | HTB accuracy for high speed |
| David Miller | [GIT]: Networking |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
git: | |
