[Xenomai-git] Jorge Ramirez-Ortiz : lib/analogy: check for errors in the calibration file
Module: xenomai-3 Branch: next Commit: 522dc5d6cf8f58fee5f489f5c2736ff1ddb84703 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=522dc5d6cf8f58fee5f489f5c2736ff1ddb84703 Author: Jorge Ramirez-Ortiz Date: Fri Aug 7 09:34:41 2015 -0400 lib/analogy: check for errors in the calibration file Signed-off-by: Jorge Ramirez-Ortiz --- lib/analogy/calibration.c | 29 + utils/analogy/insn_read.c |2 +- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/lib/analogy/calibration.c b/lib/analogy/calibration.c index 14ca454..b50cb2f 100644 --- a/lib/analogy/calibration.c +++ b/lib/analogy/calibration.c @@ -30,6 +30,12 @@ #include "boilerplate/list.h" #include "calibration.h" +#define CHK(func, ...) \ +do { \ + int rc = func(__VA_ARGS__); \ + if (rc < 0) \ + return -1; \ +} while (0) #define ARRAY_LEN(a) (sizeof(a) / sizeof((a)[0])) @@ -212,12 +218,19 @@ int a4l_read_calibration_file(char *name, struct a4l_calibration_data *data) if (d == NULL) return -1; - read_str(&data->driver_name, d, PLATFORM_STR, DRIVER_STR); - read_str(&data->board_name, d, PLATFORM_STR, BOARD_STR); + CHK(read_str, &data->driver_name, d, PLATFORM_STR, DRIVER_STR); + CHK(read_str, &data->board_name, d, PLATFORM_STR, BOARD_STR); for (k = 0; k < ARRAY_LEN(subdevice); k++) { read_int(&nb_elements, d, subdevice[k], -1, ELEMENTS_STR); - read_int(&index, d, subdevice[k], -1, INDEX_STR); + if (nb_elements < 0 ) { + /* AO is optional */ + if (!strncmp(subdevice[k], AO_SUBD_STR, sizeof(AO_SUBD_STR))) +break; + return -1; + } + + CHK(read_int, &index, d, subdevice[k], -1, INDEX_STR); if (strncmp(subdevice[k], AI_SUBD_STR, strlen(AI_SUBD_STR)) == 0) { @@ -236,19 +249,19 @@ int a4l_read_calibration_file(char *name, struct a4l_calibration_data *data) } for (i = 0; i < nb_elements; i++) { - read_int(&p->expansion, d, subdevice[k], i, + CHK(read_int, &p->expansion, d, subdevice[k], i, EXPANSION_STR); - read_int(&p->nb_coeff, d, subdevice[k], i, + CHK(read_int, &p->nb_coeff, d, subdevice[k], i, NBCOEFF_STR); - read_int(&p->channel, d, subdevice[k], i, + CHK(read_int, &p->channel, d, subdevice[k], i, CHANNEL_STR); - read_int(&p->range, d, subdevice[k], i, + CHK(read_int, &p->range, d, subdevice[k], i, RANGE_STR); p->coeff = malloc(p->nb_coeff * sizeof(double)); for (j = 0; j < p->nb_coeff; j++) { - read_dbl(&p->coeff[j], d, subdevice[k], i, + CHK(read_dbl,&p->coeff[j], d, subdevice[k], i, COEFF_STR, j); } diff --git a/utils/analogy/insn_read.c b/utils/analogy/insn_read.c index 8d457ed..8aa0740 100644 --- a/utils/analogy/insn_read.c +++ b/utils/analogy/insn_read.c @@ -223,7 +223,7 @@ static int dump_calibrated(a4l_desc_t *dsc, unsigned char *buf, int size) err = a4l_read_calibration_file(calibration_file, &cal_info); if (err < 0) { fprintf(stderr, - "insn_read: failed to read /tmp/calibration.txt \n"); + "insn_read: error reading the calibration file \n"); goto out; } ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Jorge Ramirez-Ortiz : utils/analogy: fix debug message
Module: xenomai-3 Branch: next Commit: 69ab2204c1f03bb657158e346c2d979edc896fb4 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=69ab2204c1f03bb657158e346c2d979edc896fb4 Author: Jorge Ramirez-Ortiz Date: Thu Aug 6 15:57:08 2015 -0400 utils/analogy: fix debug message Signed-off-by: Jorge Ramirez-Ortiz --- utils/analogy/calibration_ni_m.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/analogy/calibration_ni_m.c b/utils/analogy/calibration_ni_m.c index c72a44d..6f9be6f 100644 --- a/utils/analogy/calibration_ni_m.c +++ b/utils/analogy/calibration_ni_m.c @@ -973,7 +973,7 @@ static int ni_m_calibrate_ai(void) * calibrate low, medium and high gain ranges */ for (i = 0; i < ARRAY_LEN(cal_info); i++) { - __debug("Calibrating AI: %s \n", cal_info[i]); + __debug("Calibrating AI: %s \n", cal_info[i].message); if (cal_info[i].range >= 0) goto calibrate; ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Jorge Ramirez-Ortiz : drivers/analogy: release pci region if mapping failed
Module: xenomai-3 Branch: next Commit: 328b0447cfa282fbe926ebbd9113224e4a1c18b9 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=328b0447cfa282fbe926ebbd9113224e4a1c18b9 Author: Jorge Ramirez-Ortiz Date: Thu Aug 13 10:23:16 2015 -0400 drivers/analogy: release pci region if mapping failed --- kernel/drivers/analogy/national_instruments/mite.c |4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/drivers/analogy/national_instruments/mite.c b/kernel/drivers/analogy/national_instruments/mite.c index 84dbdda..be4b268 100644 --- a/kernel/drivers/analogy/national_instruments/mite.c +++ b/kernel/drivers/analogy/national_instruments/mite.c @@ -127,7 +127,7 @@ int a4l_mite_setup(struct mite_struct *mite, int use_iodwbsr_1) pci_set_master(mite->pcidev); - if (pci_request_regions( mite->pcidev, "mite")) { + if (pci_request_regions(mite->pcidev, "mite")) { __a4l_err("failed to request mite io regions\n"); return -EIO; }; @@ -139,6 +139,7 @@ int a4l_mite_setup(struct mite_struct *mite, int use_iodwbsr_1) mite->mite_io_addr = ioremap(addr, length); if (!mite->mite_io_addr) { __a4l_err("failed to remap mite io memory address\n"); + pci_release_regions(mite->pcidev); return -ENOMEM; } @@ -154,6 +155,7 @@ int a4l_mite_setup(struct mite_struct *mite, int use_iodwbsr_1) mite->daq_io_addr = ioremap(mite->daq_phys_addr, length); if (!mite->daq_io_addr) { __a4l_err("failed to remap daq io memory address\n"); + pci_release_regions(mite->pcidev); return -ENOMEM; } ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Jorge Ramirez-Ortiz : lib/analogy: validate size of calibration file
Module: xenomai-3 Branch: next Commit: 4120d9751c9124d35782b525b7c677a4f20f042c URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=4120d9751c9124d35782b525b7c677a4f20f042c Author: Jorge Ramirez-Ortiz Date: Thu Aug 6 16:38:15 2015 -0400 lib/analogy: validate size of calibration file Signed-off-by: Jorge Ramirez-Ortiz --- lib/analogy/calibration.c |4 1 file changed, 4 insertions(+) diff --git a/lib/analogy/calibration.c b/lib/analogy/calibration.c index c54cd7d..14ca454 100644 --- a/lib/analogy/calibration.c +++ b/lib/analogy/calibration.c @@ -200,10 +200,14 @@ int a4l_read_calibration_file(char *name, struct a4l_calibration_data *data) int i, j, k, index = -1, nb_elements = -1; struct a4l_calibration_subdev_data *p = NULL; struct _dictionary_ *d; + struct stat st; if (access(name, R_OK)) return -1; + if (stat(name, &st) || !st.st_size) + return -1; + d = iniparser_load(name); if (d == NULL) return -1; ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : copperplate/heapobj-pshared: change rounding of page mapping array size
Module: xenomai-3 Branch: next Commit: f522e9bd42c6f790c67716ee795d9db984640254 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=f522e9bd42c6f790c67716ee795d9db984640254 Author: Philippe Gerum Date: Fri Aug 14 09:36:27 2015 +0200 copperplate/heapobj-pshared: change rounding of page mapping array size --- lib/copperplate/heapobj-pshared.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/copperplate/heapobj-pshared.c b/lib/copperplate/heapobj-pshared.c index 0df08c3..c1631e5 100644 --- a/lib/copperplate/heapobj-pshared.c +++ b/lib/copperplate/heapobj-pshared.c @@ -128,7 +128,7 @@ static inline size_t get_pagemap_size(size_t h) */ assert((h & ~HOBJ_PAGE_MASK) == 0); return __align_to((h >> HOBJ_PAGE_SHIFT) * sizeof(struct page_entry) - + sizeof(struct shared_extent), HOBJ_PAGE_SIZE); + + sizeof(struct shared_extent), HOBJ_MINALIGNSZ); } static void init_extent(void *base, struct shared_extent *extent) ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git