various fixes (#49)

* libs: libc: math: Fix tanh() math functions
* drivers: mtd: smart: Fix trivial debug message in smartfs
* binfmt: libelf: Fix fd not closed on error
* binfmt: Fix stack memory leak on error
* fs: romfs: Fix private data not free on error
* sched: group: Fix reference after free memory
* sched: clock: Fix clock sync

Fix clock sync when CONFIG_RTC_HIRES is enabled
This commit is contained in:
Alin Jerpelea 2020-01-07 17:06:02 +02:00 committed by patacongo
parent 077ef70b0c
commit a8d63c0cec
9 changed files with 10 additions and 6 deletions

View file

@ -186,6 +186,7 @@ int exec_module(FAR const struct binary_s *binp)
{
ret = -get_errno();
berr("task_init() failed: %d\n", ret);
kumm_free(stack);
goto errout_with_addrenv;
}

View file

@ -176,6 +176,7 @@ int elf_init(FAR const char *filename, FAR struct elf_loadinfo_s *loadinfo)
if (ret < 0)
{
berr("Failed to read ELF header: %d\n", ret);
close(loadinfo->filfd);
return ret;
}
@ -194,6 +195,7 @@ int elf_init(FAR const char *filename, FAR struct elf_loadinfo_s *loadinfo)
*/
berr("Bad ELF header: %d\n", ret);
close(loadinfo->filfd);
return ret;
}

View file

@ -4988,7 +4988,7 @@ static inline int smart_allocsector(FAR struct smart_struct_s *dev,
physicalsector = smart_findfreephyssector(dev, FALSE);
finfo("Alloc: log=%d, phys=%d, erase block=%d, free=%d, released=%d\n",
logsector, physicalsector, physicalsector /
dev->sectorsPerBlk, dev->freesectors, dev->releasecount);
dev->sectorsPerBlk, dev->freesectors, dev->releasesectors);
if (physicalsector == 0xffff)
{

View file

@ -268,6 +268,7 @@ static int romfs_open(FAR struct file *filep, FAR const char *relpath,
if (ret < 0)
{
ferr("ERROR: Failed to locate start of file data: %d\n", ret);
kmm_free(rf);
goto errout_with_semaphore;
}
@ -277,6 +278,7 @@ static int romfs_open(FAR struct file *filep, FAR const char *relpath,
if (ret < 0)
{
ferr("ERROR: Failed configure buffering: %d\n", ret);
kmm_free(rf);
goto errout_with_semaphore;
}

View file

@ -44,6 +44,6 @@ double tanh(double x)
double x0 = exp(x);
double x1 = 1.0 / x0;
return ((x0 + x1) / (x0 - x1));
return ((x0 - x1) / (x0 + x1));
}
#endif

View file

@ -40,5 +40,5 @@ float tanhf(float x)
float x0 = expf(x);
float x1 = 1.0F / x0;
return ((x0 + x1) / (x0 - x1));
return ((x0 - x1) / (x0 + x1));
}

View file

@ -44,6 +44,6 @@ long double tanhl(long double x)
long double x0 = exp(x);
long double x1 = 1.0 / x0;
return ((x0 + x1) / (x0 - x1));
return ((x0 - x1) / (x0 + x1));
}
#endif

View file

@ -175,9 +175,7 @@ static void clock_inittime(void)
/* (Re-)initialize the time value to match the RTC */
#ifndef CONFIG_CLOCK_TIMEKEEPING
#ifndef CONFIG_RTC_HIRES
clock_basetime(&g_basetime);
#endif
#ifndef CONFIG_SCHED_TICKLESS
g_system_timer = INITIAL_SYSTEM_TIMER_TICKS;

View file

@ -343,6 +343,7 @@ int group_initialize(FAR struct task_tcb_s *tcb)
if (!group->tg_members)
{
kmm_free(group);
tcb->cmn.group = NULL;
return -ENOMEM;
}