3 fdisk tweaks
1) A zero-length partition is a non-partition. Also PRT_fix_CHS() assumes length is non-zero and scribbles garbage is it is zero. 2) Having written the MBR, refresh the in-memory copy to reflect what was written. 3) If we are writing an MBR, always write DOSMBR_SIGNATURE so it will be recognized by our disklabel logic. Noticed by matthew@ at c2k11. OK? Ken Index: cmd.c === RCS file: /cvs/src/sbin/fdisk/cmd.c,v retrieving revision 1.45 diff -u -p -r1.45 cmd.c --- cmd.c 2 Jul 2010 02:54:09 - 1.45 +++ cmd.c 23 Jul 2011 02:41:18 - @@ -224,9 +224,9 @@ Xedit(cmd_t *cmd, disk_t *disk, mbr_t *m d, m, pp->bs , DO_CONVERSIONS | ((pp->id == FS_BSDFFS || pp->id == FS_SWAP) ? DO_ROUNDING : 0)); - if (pp->ns == UINT_MAX) + if (pp->ns == UINT_MAX || pp->ns == 0) printf("Invalid size.\n"); - } while (pp->ns == UINT_MAX); + } while (pp->ns == UINT_MAX || pp->ns == 0); /* Fix up CHS values */ PRT_fix_CHS(disk, pp); @@ -342,6 +342,9 @@ Xwrite(cmd_t *cmd, disk_t *disk, mbr_t * return (CMD_CONT); } close(fd); + + /* Refresh in memory copy to reflect what was just written. */ + MBR_parse(disk, mbr_buf, mbr->offset, mbr->reloffset, mbr); return (CMD_CLEAN); } Index: mbr.c === RCS file: /cvs/src/sbin/fdisk/mbr.c,v retrieving revision 1.27 diff -u -p -r1.27 mbr.c --- mbr.c 20 Jun 2011 19:10:41 - 1.27 +++ mbr.c 23 Jul 2011 02:41:18 - @@ -123,7 +123,7 @@ MBR_make(mbr_t *mbr, char *mbr_buf) int i; memcpy(mbr_buf, mbr->code, MBR_CODE_SIZE); - putshort(&mbr_buf[MBR_SIG_OFF], mbr->signature); + putshort(&mbr_buf[MBR_SIG_OFF], DOSMBR_SIGNATURE); for (i = 0; i < NDOSPART; i++) PRT_make(&mbr->part[i], mbr->offset, mbr->reloffset,
Extraneous setting of d_checksum in subr_disk.c's checkdisklabel
I can't see any need to swap the bytes of d_checksum. As shown by the large context, it's just set to 0 and recalculated. ok? Ken Index: subr_disk.c === RCS file: /cvs/src/sys/kern/subr_disk.c,v retrieving revision 1.130 diff -U21 -p -r1.130 subr_disk.c --- subr_disk.c 6 Jul 2011 16:36:52 - 1.130 +++ subr_disk.c 23 Jul 2011 02:19:11 - @@ -281,43 +281,42 @@ checkdisklabel(void *rlp, struct disklab dlp->d_ntracks = swap32(dlp->d_ntracks); dlp->d_ncylinders = swap32(dlp->d_ncylinders); dlp->d_secpercyl = swap32(dlp->d_secpercyl); dlp->d_secperunit = swap32(dlp->d_secperunit); /* d_uid is a string */ dlp->d_acylinders = swap32(dlp->d_acylinders); dlp->d_flags = swap32(dlp->d_flags); for (i = 0; i < NDDATA; i++) dlp->d_drivedata[i] = swap32(dlp->d_drivedata[i]); dlp->d_secperunith = swap16(dlp->d_secperunith); dlp->d_version = swap16(dlp->d_version); for (i = 0; i < NSPARE; i++) dlp->d_spare[i] = swap32(dlp->d_spare[i]); dlp->d_magic2 = swap32(dlp->d_magic2); - dlp->d_checksum = swap16(dlp->d_checksum); dlp->d_npartitions = swap16(dlp->d_npartitions); dlp->d_bbsize = swap32(dlp->d_bbsize); dlp->d_sbsize = swap32(dlp->d_sbsize); for (i = 0; i < MAXPARTITIONS; i++) { pp = &dlp->d_partitions[i]; pp->p_size = swap32(pp->p_size); pp->p_offset = swap32(pp->p_offset); if (dlp->d_version == 0) { v0pp = (struct __partitionv0 *)pp; v0pp->p_fsize = swap32(v0pp->p_fsize); } else { pp->p_offseth = swap16(pp->p_offseth); pp->p_sizeh = swap16(pp->p_sizeh); } pp->p_cpg = swap16(pp->p_cpg); } dlp->d_checksum = 0; dlp->d_checksum = dkcksum(dlp);
Re: Synaptics touchpad
* Alexandr Shadchin [110719 22:52]: > Hi, > > Please test latest patch for support Synaptics touchpad > (or http://koba.devio.us/distfiles/synaptics.v5.diff) > Patch for snapshot from 18-Jul-2011 or newer. > > It seems everything regression eliminated. Works fine here: pms0 at pckbc0 (aux slot) wsmouse0 at pms0 mux 0 wsmouse1 at pms0 mux 0 pms0: Synaptics touchpad, firmware 7.4 -- Alexander Polakov | plhk.ru
Re: Synaptics touchpad
On 07/20/11 14:06, Aaron Bieber wrote: Still working here. Tricky to set up, but still working fine here with TrackPoint, TouchPad and optional USB mouse. Great work! Best thing is, I can now use the middle mouse button on my TrackPoint :) Thanks alot! Section "InputDevice" Identifier "TouchPad0" Driver "synaptics" Option "Device" "/dev/wsmouse0" Option "AutoServerLayout""true" EndSection Section "InputDevice" Identifier "TrackPoint1" Driver "mouse" Option "Device" "/dev/wsmouse1" Option "Emulate3Buttons" "false" # No "AutoServerLayout" here, since xorg automatically # adds first InputDevice with "mouse" driver as CorePointer. #Option "AutoServerLayout""true" EndSection Section "InputDevice" Identifier "Mouse" Driver "mouse" Option "Device" "/dev/wsmouse" Option "AutoServerLayout""true" EndSection Section "ServerLayout" Identifier "Layout0" Screen "wide" # Mouse for wsmouse muxer has to initialize first, # otherwise the TrackPoint would grab /dev/wsmouse first. InputDevice "TouchPad0" "SendCoreEvents" InputDevice "Mouse" "SendCoreEvents" InputDevice "TrackPoint1" "CorePointer" #Option "AutoAddDevices""false" Option "BlankTime" "5" EndSection Section "ServerFlags" # This would make X ignore every standard # kbd or mouse driver specified in this config file. Option "AllowEmptyInput" "false" EndSection On Wed, Jul 20, 2011 at 12:43:54AM +0600, Alexandr Shadchin wrote: Hi, Please test latest patch for support Synaptics touchpad (or http://koba.devio.us/distfiles/synaptics.v5.diff) Patch for snapshot from 18-Jul-2011 or newer. It seems everything regression eliminated.
Re: impossible panic() in ifafree()
On Fri, Jul 22, 2011 at 04:06:07PM +0200, Martin Pelikan wrote: > Or, we can introduce ifa_free() which would look and function correct, > and migrate all IFAFREE() and ifafree() calls towards that, one by one. Sorry for posting too early; this is obviously too complicated as the only problem that might occur is refcnt < 0. I'm testing new diff as Ken suggested, will post it here in a couple of hours. -- Martin Pelikan
Re: impossible panic() in ifafree()
On Fri, Jul 22, 2011 at 09:46:45AM -0400, Kenneth R Westerback wrote: > On Fri, Jul 22, 2011 at 02:51:32PM +0200, Martin Pelikan wrote: > > The whole logic in these two seems pretty ugly, but inet6 crashed when I > > tried to make it look prettier and more uniform. > > What is the point of the #define? If anything I'd go the other way > and move the refcount check into ifafree(). Saving a function call > at the expense of bloating the kernel has, in other cases, been > shown to be a losing proposition. I can only see fewer than 30 Like I said, I tried to make it look better and the netinet6 part of the tree crashed in places I'm not familiar with. So I backed off and after reading the 5.0 announcement posted it here to further discussion. Or, we can introduce ifa_free() which would look and function correct, and migrate all IFAFREE() and ifafree() calls towards that, one by one. If you believe this is the time for such changes, tell me and I'll keep hacking/testing. In such case, when no new users of ifafree are added, the panic can safely go away. -- Martin Pelikan
Creedence - The Doors - The Mama's and the Papa's - Discografías mas pendrive de regalo
The Mama's and the Papa's 01- Cass John Michael Dennie / 2- If you can Believe Your Eyes And Eaers / 3- Deliver / 4- Papa´s & Mama´s / 5- People like Us / Mama Cass 1- Dream A litle of me Creedence 1- Creedence Clearwater revival / 2- Bayou Country / 3- Green River / 4- Willy and the poorboys / 5- Cosmos factory / 6- Pendulum / 7- Mardi Gras / 8- Live in Europa / 9- Chronicle (vol 1) / 10- Chronicle (vol 2) / 11- The concert / 12- Recollection The Doors 1- Strange days / 2- The doors / 3- Wating for theSun / 4- The Soft Parade / 5- Morrison hotel / 6-L.A Woman / 7- Other voices / 8- Full circle / 9-An American Prayer
Re: impossible panic() in ifafree()
On Fri, Jul 22, 2011 at 02:51:32PM +0200, Martin Pelikan wrote: > Hi, > > this panic cannot possibly happen. The question is, whether to move it up > to the macro that is used in the code, or zap it entirely. > The whole logic in these two seems pretty ugly, but inet6 crashed when I > tried to make it look prettier and more uniform. And again, until 5.0 is > out, this might just sit here, or wait on someone's todo list. > > -- > Martin Pelikan > > Index: net/if.h > === > RCS file: /cvs/src/sys/net/if.h,v > retrieving revision 1.128 > diff -u -p -r1.128 if.h > --- net/if.h 8 Jul 2011 18:48:51 - 1.128 > +++ net/if.h 22 Jul 2011 12:14:01 - > @@ -696,6 +696,8 @@ __END_DECLS > #ifdef _KERNEL > #define IFAFREE(ifa) \ > do { \ > + if (ifa == NULL) \ > + panic("IFAFREE"); \ > if ((ifa)->ifa_refcnt <= 0) \ > ifafree(ifa); \ > else \ > Index: net/route.c > === > RCS file: /cvs/src/sys/net/route.c,v > retrieving revision 1.131 > diff -u -p -r1.131 route.c > --- net/route.c 4 Jul 2011 04:29:17 - 1.131 > +++ net/route.c 22 Jul 2011 12:14:01 - > @@ -411,8 +411,6 @@ rtfree(struct rtentry *rt) > void > ifafree(struct ifaddr *ifa) > { > - if (ifa == NULL) > - panic("ifafree"); > if (ifa->ifa_refcnt == 0) > free(ifa, M_IFADDR); > else > What is the point of the #define? If anything I'd go the other way and move the refcount check into ifafree(). Saving a function call at the expense of bloating the kernel has, in other cases, been shown to be a losing proposition. I can only see fewer than 30 IFAFREE() occurances in /usr/src/*.c. Ken
kill duplicate code detaching ip4 addrs
Hi, a bit of cleanup, which does NOT fix the second leak seen as in: # ifconfig vether0 create 10.0.0.1/24 # ifconfig vether0 destroy but not seen in # ifconfig vether0 create 10.0.0.1/24 # ifconfig vether0 -alias # ifconfig vether0 destroy And it probably needs more testing, so sorry about the timing. -- Martin Pelikan Index: net/if.c === RCS file: /cvs/src/sys/net/if.c,v retrieving revision 1.239 diff -u -p -r1.239 if.c --- net/if.c9 Jul 2011 00:47:18 - 1.239 +++ net/if.c22 Jul 2011 11:54:30 - @@ -559,6 +559,7 @@ if_detach(struct ifnet *ifp) #ifdef MROUTING vif_delete(ifp); #endif + in_ifdetach(ifp); #endif #ifdef INET6 in6_ifdetach(ifp); @@ -600,21 +601,17 @@ do { \ if (ISSET(ifp->if_xflags, IFXF_TXREADY)) TAILQ_REMOVE(&iftxlist, ifp, if_txlist); - /* -* Deallocate private resources. -*/ + /* Bye bye lladdr */ + ifa = ifnet_addrs[ifp->if_index]; + ifa_del(ifp, ifa); + if_free_sadl(ifp); + ifa->ifa_ifp = NULL; /* in case refcnt > 1, ifp will be gone */ + IFAFREE(ifa); + ifnet_addrs[ifp->if_index] = NULL; + + /* Deallocate if anything is left. */ while ((ifa = TAILQ_FIRST(&ifp->if_addrlist)) != NULL) { ifa_del(ifp, ifa); -#ifdef INET - if (ifa->ifa_addr->sa_family == AF_INET) - TAILQ_REMOVE(&in_ifaddr, (struct in_ifaddr *)ifa, - ia_list); -#endif - /* XXX if_free_sadl needs this */ - if (ifa == ifnet_addrs[ifp->if_index]) - continue; - - ifa->ifa_ifp = NULL; IFAFREE(ifa); } @@ -622,12 +619,6 @@ do { \ ifg = TAILQ_FIRST(&ifp->if_groups)) if_delgroup(ifp, ifg->ifgl_group->ifg_group); - if_free_sadl(ifp); - - ifnet_addrs[ifp->if_index]->ifa_ifp = NULL; - IFAFREE(ifnet_addrs[ifp->if_index]); - ifnet_addrs[ifp->if_index] = NULL; - free(ifp->if_addrhooks, M_TEMP); free(ifp->if_linkstatehooks, M_TEMP); free(ifp->if_detachhooks, M_TEMP); @@ -1211,7 +1202,7 @@ ifioctl(struct socket *so, u_long cmd, c { struct ifnet *ifp; struct ifreq *ifr; - struct ifaddr *ifa, *nifa; + struct ifaddr *ifa; struct sockaddr_dl *sdl; struct ifgroupreq *ifgr; char ifdescrbuf[IFDESCRSIZE]; @@ -1504,26 +1495,11 @@ ifioctl(struct socket *so, u_long cmd, c #ifdef MROUTING vif_delete(ifp); #endif + in_ifdetach(ifp); #endif #ifdef INET6 in6_ifdetach(ifp); ifp->if_xflags |= IFXF_NOINET6; -#endif -#ifdef INET - for (ifa = TAILQ_FIRST(&ifp->if_addrlist); ifa != NULL; - ifa = nifa) { - nifa = TAILQ_NEXT(ifa, ifa_list); - - /* only remove AF_INET */ - if (ifa->ifa_addr->sa_family != AF_INET) - continue; - - TAILQ_REMOVE(&in_ifaddr, - (struct in_ifaddr *)ifa, ia_list); - ifa_del(ifp, ifa); - ifa->ifa_ifp = NULL; - IFAFREE(ifa); - } #endif splx(s); } Index: netinet/in.c === RCS file: /cvs/src/sys/netinet/in.c,v retrieving revision 1.68 diff -u -p -r1.68 in.c --- netinet/in.c6 Jul 2011 01:57:37 - 1.68 +++ netinet/in.c22 Jul 2011 11:54:30 - @@ -95,6 +95,24 @@ int in_lifaddr_ioctl(struct socket *, u_ int in_addprefix(struct in_ifaddr *, int); int in_scrubprefix(struct in_ifaddr *); +void +in_ifdetach(struct ifnet *ifp) +{ + struct ifaddr *ifa, *next; + + for (ifa = TAILQ_FIRST(&ifp->if_addrlist); ifa; ifa = next) { + next = TAILQ_NEXT(ifa, ifa_list); + + if (ifa->ifa_addr->sa_family != AF_INET) + continue; + TAILQ_REMOVE(&in_ifaddr, (struct in_ifaddr *)ifa, ia_list); + + ifa_del(ifp, ifa); + ifa->ifa_ifp = NULL; /* in case refcnt > 1, ifp will be gone */ + IFAFREE(ifa); + } +} + /* Return 1 if an internet address is for a directly connected host */ int in_localaddr(struct in_addr in, u_int rdomain) Index: netinet/in.h === RCS file: /cvs/src/sys/netinet/in.h,v retrieving revision 1.90 diff -u -p -r1.90 in.h --- netinet/in.h6 Jul 2011 01:57:37 - 1.90 +++ netinet/in.h22 Jul 2011 11:54:31 - @@ -801,6 +801,7 @@ in_cksum_addword(u_int16_t a, u_
vether(4) ifmedia memory leak
Hi, sorry for sending this after the 5.0-beta announcement, too much work. I don't know why does vether(4) need the 'media' option, but if you create and destroy lots of vethers, M_IFADDRs are leaking. This idea is taken from trunk(4). There is still another one malloc() leaking, though. -- Martin Pelikan Index: net/if_vether.c === RCS file: /cvs/src/sys/net/if_vether.c,v retrieving revision 1.15 diff -u -p -r1.15 if_vether.c --- net/if_vether.c 2 Apr 2010 21:45:49 - 1.15 +++ net/if_vether.c 22 Jul 2011 11:24:41 - @@ -106,6 +106,7 @@ vether_clone_destroy(struct ifnet *ifp) { struct vether_softc *sc = ifp->if_softc; + ifmedia_delete_instance(&sc->sc_media, IFM_INST_ANY); ether_ifdetach(ifp); if_detach(ifp); free(sc, M_DEVBUF);
rtableid typo across kernel
Hi, ugly typo; anyone thinks this should survive to the upcoming release? -- Martin Pelikan Index: net/pf.c === RCS file: /cvs/src/sys/net/pf.c,v retrieving revision 1.764 diff -u -p -r1.764 pf.c --- net/pf.c9 Jul 2011 17:42:19 - 1.764 +++ net/pf.c22 Jul 2011 11:45:45 - @@ -2592,7 +2592,7 @@ pf_get_mss(struct mbuf *m, int off, u_in } u_int16_t -pf_calc_mss(struct pf_addr *addr, sa_family_t af, int rtabelid, u_int16_t offer) +pf_calc_mss(struct pf_addr *addr, sa_family_t af, int rtableid, u_int16_t offer) { #ifdef INET struct sockaddr_in *dst; @@ -2615,7 +2615,7 @@ pf_calc_mss(struct pf_addr *addr, sa_fam dst->sin_family = AF_INET; dst->sin_len = sizeof(*dst); dst->sin_addr = addr->v4; - ro.ro_tableid = rtabelid; + ro.ro_tableid = rtableid; rtalloc_noclone(&ro); rt = ro.ro_rt; break; @@ -2628,7 +2628,7 @@ pf_calc_mss(struct pf_addr *addr, sa_fam dst6->sin6_family = AF_INET6; dst6->sin6_len = sizeof(*dst6); dst6->sin6_addr = addr->v6; - ro6.ro_tableid = rtabelid; + ro6.ro_tableid = rtableid; rtalloc_noclone((struct route *)&ro6); rt = ro6.ro_rt; break; Index: net/radix.c === RCS file: /cvs/src/sys/net/radix.c,v retrieving revision 1.28 diff -u -p -r1.28 radix.c --- net/radix.c 22 Aug 2010 17:02:04 - 1.28 +++ net/radix.c 22 Jul 2011 11:45:45 - @@ -986,7 +986,7 @@ rn_walktree(struct radix_node_head *h, i while ((rn = base) != NULL) { base = rn->rn_dupedkey; if (!(rn->rn_flags & RNF_ROOT) && - (error = (*f)(rn, w, h->rnh_rtabelid))) + (error = (*f)(rn, w, h->rnh_rtableid))) return (error); } rn = next; Index: net/radix.h === RCS file: /cvs/src/sys/net/radix.h,v retrieving revision 1.16 diff -u -p -r1.16 radix.h --- net/radix.h 28 Jun 2010 18:50:37 - 1.16 +++ net/radix.h 22 Jul 2011 11:45:45 - @@ -128,7 +128,7 @@ struct radix_node_head { int (*)(struct radix_node *, void *, u_int), void *); struct radix_node rnh_nodes[3];/* empty tree for common case */ int rnh_multipath; /* multipath? */ - u_int rnh_rtabelid; + u_int rnh_rtableid; }; #ifdef _KERNEL Index: net/route.c === RCS file: /cvs/src/sys/net/route.c,v retrieving revision 1.131 diff -u -p -r1.131 route.c --- net/route.c 4 Jul 2011 04:29:17 - 1.131 +++ net/route.c 22 Jul 2011 11:45:46 - @@ -197,7 +197,7 @@ rtable_init(struct radix_node_head ***ta for (i = 0; i < rtafidx_max; i++) { if ((*table)[i] != NULL) - (*table)[i]->rnh_rtabelid = id; + (*table)[i]->rnh_rtableid = id; } return (0);
impossible panic() in ifafree()
Hi, this panic cannot possibly happen. The question is, whether to move it up to the macro that is used in the code, or zap it entirely. The whole logic in these two seems pretty ugly, but inet6 crashed when I tried to make it look prettier and more uniform. And again, until 5.0 is out, this might just sit here, or wait on someone's todo list. -- Martin Pelikan Index: net/if.h === RCS file: /cvs/src/sys/net/if.h,v retrieving revision 1.128 diff -u -p -r1.128 if.h --- net/if.h8 Jul 2011 18:48:51 - 1.128 +++ net/if.h22 Jul 2011 12:14:01 - @@ -696,6 +696,8 @@ __END_DECLS #ifdef _KERNEL #defineIFAFREE(ifa) \ do { \ + if (ifa == NULL) \ + panic("IFAFREE"); \ if ((ifa)->ifa_refcnt <= 0) \ ifafree(ifa); \ else \ Index: net/route.c === RCS file: /cvs/src/sys/net/route.c,v retrieving revision 1.131 diff -u -p -r1.131 route.c --- net/route.c 4 Jul 2011 04:29:17 - 1.131 +++ net/route.c 22 Jul 2011 12:14:01 - @@ -411,8 +411,6 @@ rtfree(struct rtentry *rt) void ifafree(struct ifaddr *ifa) { - if (ifa == NULL) - panic("ifafree"); if (ifa->ifa_refcnt == 0) free(ifa, M_IFADDR); else
Re: New simple prio queueing doesn't work with pppoe(4)
* Christopher Zimmermann [2011-07-21 23:46]: > ok, found the villain. Seems like my ISP is limiting bandwidth by > randomly dropping packets. congratulations, you just figured out how IP works. -- Henning Brauer, h...@bsws.de, henn...@openbsd.org BS Web Services, http://bsws.de Full-Service ISP - Secure Hosting, Mail and DNS Services Dedicated Servers, Rootservers, Application Hosting
Beatles - McCartney - Lennon -Starr - Discografías mas pendrive de regalo
The Beatles 01- The early tapes / 02- Please Please Me / 03- With the beatles / 04- A hard days night / 05- Beatles for sale / 06- Help / 07- Love songs / 08- Rubbber Soul / 09- Revolver / 10- Sgt peppers lonely heart / 11- Magical mystery tour / 12- The white album / 13- Abbey road / 14- Yellow submarine / 15- Let it be / 16- Rock and roll music / 17- Alive at the Hollywood bowl / 18- Past masters / 19- Past-masters-volume-two / 20- In The Beginning / 21- Live at the BBC / 22- Anthology 1 / 23- Anthology 2 / 24- Anthology 3 / 25- One / 26- Let It Be Naked / 27- The blue album, the best of 1967-1970 / 28- The red album, the best of 1962-1966 / 29- Free as bird John Lennon 1- Power To The People / 2- Lennon Legend: The Very Best of John Lennon / 3- Live Peace in Toronto (1969) Dal Vivo / 4- John / 5- Lennon/Plastic Ono Band (1970) / 6- Imagine (1971) / 7- Some Time in New York City (1972) / 8- Live in New York City (1972) / 9- Dal Vivo / 10- Mind Games (1973) / 11- Walls and Bridges (1974) / 12- Shaved Fish (1975) / 13- Double Fantasy (1980) / 14- The John Lennon Collection (1982) Paul McCartney 1- McCartney / 2- Ram / 3- Wild life / 4- Red Rose Speedway / 5- Band On The Run / 6- Venus And Mars / 7- Wings At The Speed Of Sound / 8- Wings Over America / 9- Thrillington / 10- London Town / 11- Back To The Egg / 12- McCartney II / 13- Tug Of War / 14- Pipes Of Peace / 15- Give My Regards ToBroad Street / 16- Press To Play / 17- Choba B CCCP/ 18- Flowers In The Dirt / 19- Tripping The LiveFantastic / 20- Unplugged / 21- Liverpool Oratorio/ 22- Off The Ground / 23- Paul Is Live / 24- FlamingPie / 25- Standing Stone / 26- Run Devil Run / 27- Driving Rain / 28- Back In The U.S / 29- Chaos And Creation In The Backyard / 30- Ecce Cor Meum (Behold My Heart) / 31- Memory Almost Fullo Ringo Starr 1- Beacoups of Blues/ 2- Sentimental Journey / 3- Ringo / 4- GoodnightVienna / 5- Blast From Your Past / 6- Ringo's Rotogravure /7- Ringo the 4th / 8- Scouse The Mouse / 9- Stopand Smell the Roses / 10- Old Wave / 11- Lost andFound (Unreleased) / 12- The 1989 Tour, Mansfield, MA / 13- Time Takes Time / 14- All-Star Band, Vol 1 / 15- Vertical Man / 16- I Wanna Be Santa Claus / 17- King Biscuit Flower Hour / 18- Ringo Rama / 19- Choose Love / 20- Rare Tracks / 21- Photograph, the Best of
fix 2 possible memory leaks in sftp-client.c
those 2 functions have conditions that return without freeing memory. (Suggestions from armani@). Index: sftp-client.c === RCS file: /cvs/src/usr.bin/ssh/sftp-client.c,v retrieving revision 1.94 diff -u -p -r1.94 sftp-client.c --- sftp-client.c 4 Dec 2010 00:18:01 - 1.94 +++ sftp-client.c 20 Jul 2011 20:14:17 - @@ -798,8 +798,6 @@ do_hardlink(struct sftp_conn *conn, char Buffer msg; u_int status, id; - buffer_init(&msg); - /* Send link request */ id = conn->msg_id++; if ((conn->exts & SFTP_EXT_HARDLINK) == 0) { @@ -807,6 +805,7 @@ do_hardlink(struct sftp_conn *conn, char return -1; } + buffer_init(&msg); buffer_put_char(&msg, SSH2_FXP_EXTENDED); buffer_put_int(&msg, id); buffer_put_cstring(&msg, "hardl...@openssh.com"); @@ -882,6 +881,7 @@ do_readlink(struct sftp_conn *conn, char u_int status = buffer_get_int(&msg); error("Couldn't readlink: %s", fx2txt(status)); + buffer_free(&msg); return(NULL); } else if (type != SSH2_FXP_NAME) fatal("Expected SSH2_FXP_NAME(%u) packet, got %u",