From 983e36f7c11ef99fcabd91b416cd32a86c1b463b Mon Sep 17 00:00:00 2001 From: Robin Mallinson Date: Wed, 21 Nov 2012 00:48:27 +0000 Subject: [PATCH] Following test and bug fix code now works as intended on partial writes. --- ServoBlaster/servoblaster.c | 11 ++++++++++- ServoBlaster/servoblaster.ko | Bin 10356 -> 10620 bytes 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ServoBlaster/servoblaster.c b/ServoBlaster/servoblaster.c index 162cf63..2e56494 100644 --- a/ServoBlaster/servoblaster.c +++ b/ServoBlaster/servoblaster.c @@ -415,12 +415,20 @@ static ssize_t dev_write(struct file *filp,const char *buf,size_t count,loff_t * int* const idx = &(pdata->cmd_idx); str = pdata->cmd_str; + printk(KERN_WARNING "ServoBlasterA: idx(%i),count(%u),max_idx (%i)\n", + *idx,count, max_idx + ); + if ((*idx+count) > max_idx) count = max_idx-*idx; - if (copy_from_user(str, buf+*idx, count)) { + if (copy_from_user(str+*idx, buf, count)) { return -EFAULT; } *idx+=count; str[*idx] = '\0'; + printk(KERN_WARNING "ServoBlasterB: idx(%i),count(%u),max_idx (%i) str(%s)EOS\n", + *idx, count, max_idx, str + ); + end_of_line = strchr(str, '\n'); if (NULL == end_of_line) { @@ -442,6 +450,7 @@ static ssize_t dev_write(struct file *filp,const char *buf,size_t count,loff_t * int servo; int cnt; int n; + printk(KERN_WARNING "ServoBlasterc: str(%s)\n", str); n = sscanf(str, "%d=%d", &servo, &cnt); if (n != 2) { printk(KERN_WARNING "ServoBlaster: Failed to parse command (n=%d)\n", n); diff --git a/ServoBlaster/servoblaster.ko b/ServoBlaster/servoblaster.ko index f77c6adeb3978320813670a1a4563ae6728416fc..2c070d8c9e2957cb7330b2af63ae75ea4401fffb 100644 GIT binary patch delta 2106 zcmai!e{54#6vxkdUAHnj^I*Tat+S8ewh}jZ8=Y)qVmF2uGjJP2s}9%E6`78$SvwtO zp$}FyG0Y6^Vjuzf2>ihxiX-I@vZxtobRseMBL)+L{jp~NiGgH)K(biRX>SeDKYYo} z=brC9_ndQoyt~-3)HNlGAC&~Wae(fG*rCO;KobOjQt8@c{O*Cz zZgxx4x=qm%k{H(iN+$p4R;KklNsAfeccM1vN(5^!C7zZqCu|*_gD#keo8%+9QTi|{ zO5ZCWYwG}g07B6sfLwqb2`k1nNbf`iB@~Q;PfK)5A>HK;#a+HHbfc`rDA`#dtb=

ODQ6fdI)zPXgv?F;EOSOksPm!lshG0Bs0voaYcO~gU~=gL@&NjahC zU@_|f-Zx7pbb!u;0x-Mi#6`%{Xm=%Y;9wkgbI_1JcS2 z5Y0c8OqQBu3erWZE4?6vbxJTZ7uK`jus&f>qoz4kH`E=7n&b&x1=GFHvG8d~7fTD7 zqJ_Y8Y97V)VT>GAjf1M4GF+k~KCI6l*cA;PYE`2Xehi4BOAYH{AFfh;Pp@%@^uf81 zu4ACKhXTKib|cz`hjwi=l?=cE00C@gu+3r1e0Grc&!b^QK8_b_3Hx`q)ZP-Nw8#^N zNkMEA*lgBwV!IH@HvVqN8%LkacauFZZCUv#Du=K+L;#<&_7-$#iKEW2e$*Y->F`gp zzGc6Z8PrAtz|1*=dMyh%b5^w)k)LF%?#PbZ-9m9)-7_tlnwk{F(YW4G-_o+FzO8k0 zLlgVqkxoy`26>==%w9RLy2dj+Iux*1j;^lR+c(yWs!TFoU1)Y}-0mHDbGUV|&mZuP zwEo{5*&i6OSNd0PettVnXWyC2*;;d9;lILoHjrQBDYGH_NWPOfS2)=mHYfJg70!s7 zKQ9)nwC&!w#Z@=+Rzu`L?e(r>=H~iYw!f$%vcKqcLA2zu+r<^eHvF^pu;rFj#&%3+ zVdpLRtlc6B{cNYDTKwoS_O7K$IKw`+R2#oUhokIXNj|${k+OTt06iiTODe>RkFs-? zBGz0YiDnzyR#GKgXQL(6qN|XdEU6NkZR{(=d?EW2F=%5&rB$L-%r=%*86Cv{>E;Y@ULXcB z!5npV;tGhAkTXhr4HNV6B_ypBaJOg$Sww6m;#S;huG@*YdWEx_>n_e7P7S%u>cs-E zLzQ18b_4uG>;(9gbAj^?=OPgc%fee-j)j|$R9Hc7ac0KJpWc>?-Og=d#-ENg{iWmM8?^QxfeN5qOMhtxHx{3-Y2xdIS4>-Ug+C>z;j{L2qi* z-=M7fubB3(=L3TS9`BGJrz>3O8x8Ck9&t1^al7B^_lykq0t3TCj;6-QimF}W-ws(q A`2YX_ delta 1825 zcmZXUZA@EL7{{M`+d@G|y1<}sKtWPW#H|~ZQ8Tp@5MKr<6K8ceU@hpuS(CRx3gO8o)gJE*qMf>1&m-4RU-IzrCByns?nMNLwPn!sj~aj2^jgL0ThT%#qCTx%_^i z)csULWBuNy1I>-@x+eG2&HG%<4W9Zv%v#XSek-Vq+Y7f1%wObX=3+0KA>z1J1rezsJJN+G*vaf^?u;||*c0Nun_@ao`>+Is;; ziAMk?h@Akld_K>a;9N$EIRGofJb*PKwy1FX@0=T)w>dj>7`F`~;Kw7g_h8eU5|RR( zB4XfKvg5U1AYvg2A{Mqx{w_>RMBNtI58^Q3=m*$Od>Q{4#FsEW5!X!;@mF*q%?Q9E zH>_|fL`)RRMIOZjoLiiFW5#agtmO<6F~KPDRcwIICpl+`uVG^Dzl;Bq0~J8qmU%J)GZvejlRuFcU#h$z3TAe`dbhZykFQpLFGSp) zebCkQ=5TLUcrfrr*GQlz*cUz#>T`SQxjk?q5bR5PN8BFw|BV@S9d`r=1ARjyxO@*c h^t>G&7(VXyxcI!cZzOPhFccmf9&$H$;?|mD;y